Django:强制一个字段对于具有相同外键的所有模型对象是唯一的

时间:2011-03-16 14:29:26

标签: python django django-models

假设我在django(未测试)中定义了以下模型:

class CarMaker(models.Model):
   name = models.CharField("Name of car maker",
                            max_length=40)


class Car(models.Model):
   car_id = models.IntegerField("ID for this particular car")
   maker = models.ForeignKey("Maker of this car")

是否有标准的django方法可确保具有相同Car的所有maker具有唯一car_id,而不会使所有<{1}}唯一/ em> car_id s?

E.g。有两家汽车制造商,“斯柯达”和“雷诺”。斯柯达制造400 Car,雷诺制造300 Car。我想确保car_id对于所有Skodas都是唯一的,并且对所有雷诺都是唯一的,但不一定对所有Car都是唯一的。

由于

1 个答案:

答案 0 :(得分:12)

您可以使用模型选项unique_together来创建此类约束。请参阅Django文档:http://docs.djangoproject.com/en/1.2/ref/models/options/#unique-together

class Car(models.Model):
    car_id = models.IntegerField("ID for this particular car")
    maker = models.ForeignKey("Maker of this car")

    class Meta(object):
        unique_together = ("car_id", "maker")