2012-06-03 5 views
0

Je ne peux pas obtenir Django (1.5) pour créer des index MySQL UNIQUE sur 3 colonnes, même si j'ai suivi toutes les suggestions que j'ai trouvées sur SO. Voici à quoi ressemble mon modèle:Django unique_together ne fonctionne pas

class Loc(models.Model): 
    rand = models.IntegerField() 
    sectiune = models.ForeignKey(Sectiune) 
    numar = models.IntegerField() 
    pret = models.FloatField() 

    def __unicode__(self): 
     return str(self.sectiune.nume) + ': R' + str(self.rand) + ' L' +  str(self.numar) 

    class Meta: 
     unique_together = (("rand","sectiune","numar"),) 

Je ne comprends vraiment pas ce qui ne va pas. J'ai vu un rapport de bogue que unique_together ne fonctionne pas sur les clés étrangères, mais j'ai également vu que cela a été corrigé. De l'aide?

+0

Avez-vous essayé d'utiliser le nom de colonne au lieu du nom de champ? –

+0

Ne fonctionne pas, il me donne une erreur: "unique_together" fait référence à 'sectiune_id', un champ qui n'existe pas. –

Répondre

1

Il s'avère que Django n'est pas très intelligent après tout ... Il ne sait pas comment créer une table pour créer la contrainte UNIQUE. Je devais juste supprimer les tables, exécuter à nouveau syncdb, et les contraintes étaient là :)

+3

Vous pourriez vouloir regarder Django South. C'est beaucoup mieux de gérer les migrations de bases de données. –

+0

@MikeDeSimone doit avoir manqué votre commentaire à l'époque, mais oui, South a fait l'affaire (et le système de migration de Django 1.7 aujourd'hui aussi). –

Questions connexes