I am making a django app using the User
class from django.contrib.auth.models
.
I have defined a model, called a group with a M2M relationship to users. I have difficulty retrieving the groups a given user belongs to.
Here's the group 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)
I would like to retrieve the groups for which the user belongs to the members field of the groups.
Here is the command that fails, trying to retrieve the groups that a particular user belongs to - I am not sure why - could you let me know ? (user
is a User
instance)
user_groups = user.group_set.all()
The error I get is:
'User' object has no attribute 'group_set'
What's wrong here?
SOLUTION
I eventually found the solution. I had to make the query with the related_name
, so here it is:
groups_member = user.member.all()
Because the many-to-many relation is through the members
property, and this property has the related_name
attribute, the correct syntax is:
user_groups = user.member.all()
( Without the related name attribute, it would be user_groups = user.members_set.all()
)
And the reverse relation is:
group_users = group.members.all()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With