2013-05-28 17 views

risposta

38

Lo implementerei in modo leggermente diverso.

vorrei usare una chiave predefinita primaria (campo auto), e utilizzare la proprietà di classe meta, unique_together

class Hop(models.Model): 
    migration = models.ForeignKey('Migration') 
    host = models.ForeignKey(User, related_name='host_set') 

    class Meta: 
     unique_together = (("migration", "host"),) 

agirebbe come una colonna di chiave primaria "surrogato".

Se davvero si vuole creare una chiave primaria a più colonne, guardare in this app

+0

Se uso unique_together, vuol dire che non devo avere un campo impostare come chiave primaria? – connor

+2

Se non si specifica 'Campo automatico ', django ne aggiungerebbe uno per te. Quindi, in breve, non farlo. – karthikr

6

Attualmente, i modelli di Django supportano solo una chiave primaria singola colonna. Se non si specifica primary_key = True per il campo nel modello, Django creerà automaticamente una colonna id come chiave primaria.

L'attributo unique_together nella classe Meta è solo vincoli per i dati.

Problemi correlati