Django模型:依赖字段

问题描述 投票:2回答:2

说我有以下型号:

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日期是没有意义的。

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

python django model
2个回答
2
投票

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

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

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


0
投票

您可以使用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 !!!')
© www.soinside.com 2019 - 2024. All rights reserved.