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

pis*_*lis 6 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")
Run Code Online (Sandbox Code Playgroud)

是否有一种标准的django方式来确保所有Car具有相同性能的s具有maker独特性car_id,而不是car_id所有 Car s 制造独特的?

例如,有两家汽车制造商,"斯柯达"和"雷诺".Car斯柯达制造400 秒Car,雷诺制造300 秒.我想确保car_id对于所有Skodas都是唯一的,并且对于所有雷诺来说都是独一无二的,但并不一定对所有的都是唯一Car的.

谢谢

Mar*_*vin 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")
Run Code Online (Sandbox Code Playgroud)