2011-03-16 6 views
6

Supongamos que tengo los siguientes modelos definidos en Django (no probado):Django: Fuerza un campo para ser único para todos los modelos de objetos con la misma clave externa

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") 

¿Hay una manera de Django estándar para asegurar que todos Car s con el mismo maker tienen un único car_id, sin hacer car_id único para todosCar s?

E.g. Hay dos fabricantes de automóviles, "Skoda" y "Renault". Hay 400 Car s fabricados por Skoda, y 300 Car s fabricados por Renault. Quiero asegurarme de que car_id sea único para todos los Skodas, y único para todos los Renaults, pero no necesariamente único para todos los Car s.

Gracias

Respuesta

11

Puede utilizar las opciones de modelo unique_together para crear este tipo de restricción. Consulte la documentación de 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

Gracias, exactamente lo que estaba buscando. Y +10 para vincular a los documentos :) – pisswillis

Cuestiones relacionadas