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_back
和status
这两个领域相互依赖。例如,如果这本书是“借来的”,那么有一个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模型:依赖字段的主要内容,如果未能解决你的问题,请参考以下文章