Django模型:依赖字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django模型:依赖字段相关的知识,希望对你有一定的参考价值。

说我有以下型号:

class Book(models.Model):
    due_back = models.DateField(null=True, blank=True)

    AVAILABILITY = (
        ('a', 'Available'),
        ('o', 'On loan'),
        ('n', 'Not available'),
        ('r', 'Reserved'),
    )

    status = models.CharField(choices=AVAILABILITY, blank=True)

我的问题在于due_backstatus这两个领域相互依赖。例如,如果这本书是“借来的”,那么有一个due_back日期是没有意义的。

目标是,如果这本书是“借来的”,那本书可能只有一个到期日。但是如何做到这一点,是否存在针对此类问题的“最佳实践”?

答案

我想回答我自己的问题。我进一步查看了Django文档,看起来Model.clean()方法是一个解决方案。

https://docs.djangoproject.com/en/1.11/ref/models/instances/#django.db.models.Model.clean

如果有人知道更好的解决方案,请发帖。 :)

另一答案

您可以使用Django Validators实现此目的。

from django.core.exceptions import ValidationError

class Book(models.Model):

     ...
     def clean(self):
         if self.status == 'o' and self.due_back is not None:
            raise ValidationError('Error Book on Loan have due back date How !!!')

以上是关于Django模型:依赖字段的主要内容,如果未能解决你的问题,请参考以下文章

Django 模型 - 字段依赖

Django模型:依赖字段

依赖于模型的 Django 小部件

django cms 插件上的动态模型选择字段

当我尝试实现依赖字段时,Django select2没有找到结果

以原子方式比较-交换 Django 中的模型字段