models.py:
class CarType(models.Model):
engine = models.CharField()
transmission = models.CharField()
class Car(models.Model):
car_type = models.ForeignKey(CarType,)
color ...
class Details(models.Model):
car = models.ForeignKey(Car, blank=True, null=True, related_name='details')
engine = models.CharField()
transmission = models.CharField()
例如,我们有宝马汽车。这种类型的汽车只需安装发动机等级A +。
然后,当我们向我们的汽车添加新的细节时(我们也可以添加带有详细信息的新车),我们需要检查 - 我们要安装的是一个细节,是否相同,这种车型支持。
所以,我们需要随时随地检查,我们添加了哪些车型,我们用什么细节创建的车。
如果我们将发动机等级B添加到我们的BMW(需要发动机等级A +),请提出一些例外情况。
Car类中的save方法还不够,因为我们可以通过Detail类向汽车添加新的细节。
你怎么解决这个问题?
谢谢!
答案 0 :(得分:0)
您可以使用自定义验证程序。
from django.core.exceptions import ValidationError
def validate_a(instance):
if instance.engine != 'A+':
raise ValidationError('Instance requires A+ class engine')
然后在models.py
中...
class Car(models.Model):
...
car = models.ForeignKey(Car,
blank=True,
null=True
related_name='details',
validators=[validate_a])