How do I access django join table data?

Viewed 22

I'm trying to access data in a join table using django. I have a list of users and a list of groups in a ManyToMany relationship.

class Member(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    groups = models.ManyToManyField(Group, related_name="members")

class Team(models.Model):
    name = models.CharField(max_length=25)
    creator = models.ForeignKey("footballteamapi.Member", on_delete=models.CASCADE)

The join table looks like this:

footballteamapi_member_teams
id+member_id+team_id
1+1+1
2+1+2
3+2+1

How do I go about accessing that table since there's no coinciding model to reference (i.e. Team.objects.all())?

1 Answers

You can use access the Team table in the reverse direction like so:

member = Member.objects.get(id="<member-id>")
teams = member.team_set.all()

But I like to set the related_name option on the ForiegnKey field like so:

class Team(models.Model):
    creator = models.ForeignKey(..., related_name='teams')
    ...

Then the above changes to:

member = Member.objects.get(id="<member-id>")
teams = member.teams.all()
Related