2012-04-13 14 views
0

Ich mache eine Django-App mit der User Klasse von django.contrib.auth.models.Django/Benutzer Zugriff in ManyToMany Feld

Ich habe ein Modell, genannt Gruppe mit einer M2M-Beziehung zu Benutzern definiert. Ich habe Schwierigkeiten beim Abrufen der Gruppen, zu denen ein bestimmter Benutzer gehört.

Hier ist die Gruppe Definition:

class group(models.Model): 
    user = models.ForeignKey(User,related_name = 'owner') # the owner 
    name = models.CharField(max_length=100) # name of the group 

    # members of the group 
    members = models.ManyToManyField(User,related_name = 'member') 

    def __unicode__(self): 
     return str(self.name) 

Ich mag würde die Gruppen abzurufen, für die der Benutzer auf die Mitglieder Bereich Gruppen gehört.

Hier ist der Befehl, der fehlschlägt, versucht, die Gruppen, die ein bestimmter Benutzer gehört zu erhalten - ich bin mir nicht sicher warum - können Sie mich wissen lassen? (user ist eine User Instanz)

user_groups = user.group_set.all() 

Der Fehler, den ich bekommen ist:

'User' object has no attribute 'group_set' 

Was ist hier falsch ist?

SOLUTION

Ich fand schließlich die Lösung. Ich hatte die Abfrage mit den related_name, machen, so ist es hier:

groups_member = user.member.all() 

Antwort

4

Da die many-to-many-Beziehung durch die members Eigenschaft ist, und diese Eigenschaft hat das related_name Attribut, die korrekte Syntax ist:

user_groups = user.member.all() 

Und die umgekehrte Beziehung ist (ohne das damit verbundene Namensattribut, wäre es user_groups = user.members_set.all() sein):

group_users = group.members.all() 
+0

funktioniert - danke! – mikolune

+2

Ok, denken Sie daran, die Antwort als Lösung zu überprüfen. – danihp

Verwandte Themen