我有一个模型,其中包含多对多字段。我很想知道如何以及在何处对这些元素进行检查。
示例:
class Tire(models.Model):
type = ('front-left','front-right','rear-left','rear-right')
class Car(models.Model):
tires = models.ManyToManyField('Tire')
创建Car对象时,我想禁止Car使用相同类型的轮胎。
谢谢
编辑1:
是的......所以问题是,一辆轮胎可以属于多辆没有多大意义的汽车......但事实就是如此。
答案 0 :(得分:3)
如果您可以指定每次将其分配给汽车时使用哪个轮胎,可能更好的方法是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'),
]
这样就可以保证在数据库级别上每辆车只有一种轮胎。