2011-03-16 65 views
6

假设我有在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的方式,以确保全部Car s同maker有一个独特的car_id,没有使car_id唯一的全部Car s?

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

感谢

回答

11

您可以使用该模型选项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") 
+0

谢谢,正是我在找的东西。和+10链接到文档:) – pisswillis 2011-03-16 14:43:44

相关问题