检查mod的可用组件

2024-04-20 02:20:25 发布

您现在位置:Python中文网/ 问答频道 /正文

型号.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级发动机(需要A+级发动机),那就提出一些例外

Car类中的save方法不够,因为我们可以通过detail类向Car添加新的细节

你将如何解决这个问题

谢谢


Tags: truemodelmodelscar汽车细节engine发动机
1条回答
网友
1楼 · 发布于 2024-04-20 02:20:25

您可以使用自定义验证器

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])

相关问题 更多 >