我有一个模型,其中包含多对多字段。我有兴趣知道应该如何以及在哪里对这些元素进行检查。
示例:
class Tire(models.Model):
type = ('front-left','front-right','rear-left','rear-right')
class Car(models.Model):
tires = models.ManyToManyField('Tire')
创建汽车对象时,我想禁止汽车拥有相同类型的轮胎。
谢谢
编辑1:
是的...所以问题是一个轮胎可以属于多辆汽车,这没有多大意义...但事实就是这样。
最佳答案
如果您可以接受每次将轮胎分配给汽车时分配给哪个轮胎,也许更好的方法是使用through
模型:
class Tire(models.Model):
# your tire fields
class Car(models.Model):
# car fields
tires = models.ManyToMany(Tire, through="CarTire")
class CarTire(models.Model):
car = models.ForeignKey(Car, related_name="car_tire")
tire = models.ForeignKey(Tire)
tire_type = models.CharField(choices=types)
class Meta:
unique_together = [
('car', 'tire_type'),
]
这样就可以在数据库级别保证每辆车每种类型只有一个轮胎。
关于django - django 中的多对多验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369403/