2009-07-01 7 views
0

Je suis novice en django (et je n'ai aucune expérience en SQL), donc il n'y a peut-être pas de façon standard de le faire.comment vérifier la structure de la base de données interne

suppose donc que j'utilise la bande, personne, par exemple des membres de http://docs.djangoproject.com/en/dev/ref/contrib/admin/#working-with-many-to-many-intermediary-models

Et si je veux vous assurer, il y a au maximum une adhésion bertween une personne fixe et une bande fixe. Une personne ne peut avoir qu'un seul "invite_reason" et "join_date" pour le groupe. Y at-il une sorte de drapeau "unique" comme pour les modèles onetomany. Je suppose que je peux écrire une routine pour vérifier et effacer les nouveaux. Où vivrait une telle routine et que va-t-elle appeler (signaux cron, django (que je ne comprends pas encore))?

Répondre

2

J'ai peut-être mal compris votre question, mais peut-être que vous voulez regarder dans la classe Meta intérieure?

class Membership(models.Model): 

    class Meta: 
     unique_together = (('person'), ('group'),) 

    person = models.ForeignKey(Person) 
    group = models.ForeignKey(Group) 
    date_joined = models.DateField() 
    invite_reason = models.CharField(max_length=64) 

Cela ajouterait la contrainte qu'une personne ne peut jamais être membre d'un groupe deux fois. En termes techniques, il ne peut jamais exister deux lignes dans cette table où "personne" et "groupe" ont la même valeur.

Si vous voulez vous assurer que seulement par ex. personne avec PK 7 ne devrait jamais être un membre du groupe avec PK 11 deux fois, vous devriez vraiment regarder dans les signaux Django comme vous l'avez dit, en particulier le crochet pre_save.

Questions connexes