Django:强制同一外键的所有模型对象字段唯一
假设我在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方法,可以确保所有同一个maker
(制造商)的Car
(汽车)都有一个独特的car_id
(汽车ID),而不需要让car_id
在所有Car
中都是唯一的呢?
举个例子,有两个汽车制造商,“Skoda”和“Renault”。Skoda生产了400辆汽车,而Renault生产了300辆汽车。我想确保Skoda的car_id
在Skoda的汽车中是唯一的,Renault的car_id
在Renault的汽车中也是唯一的,但不需要在所有Car
中都是唯一的。
谢谢
1 个回答
13
你可以使用模型选项 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")