django

时间:2016-02-12 18:08:47

标签: django django-models

我有一个模型,其中包含多对多字段。我很想知道如何以及在何处对这些元素进行检查。

示例:

class Tire(models.Model):
    type = ('front-left','front-right','rear-left','rear-right')

class Car(models.Model):
    tires = models.ManyToManyField('Tire')

创建Car对象时,我想禁止Car使用相同类型的轮胎。

谢谢

编辑1:

是的......所以问题是,一辆轮胎可以属于多辆没有多大意义的汽车......但事实就是如此。

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

这样就可以保证在数据库级别上每辆车只有一种轮胎。