HyperX
HyperX

Reputation: 1211

Query from N:1 table to one

I am not really sure how should I do this but here, for example, I have model team and rider. So obviously team have many riders so FK is on Rider.

class Team(models.Model):
    team_name = models.CharField(_('Team name'), max_length=100, db_index=True)
    bike = models.CharField(_('Bike'), max_length=100, db_index=True)
    slug = models.SlugField(_('Slug'), max_length=100)


class Rider(models.Model):
    first_name = models.CharField(_('First name'), max_length=100, db_index=True)
    last_name = models.CharField(_('Last name'), max_length=100, db_index=True)
    number = models.IntegerField(_('Rider number'))
    team = models.ForeignKey(Team)

Now in the template, I get all the teams and display them, but at the same time I would like to display riders per team so I use for loop to display team:

{% for team in teams %}
{% endfor %}

Now how am I able to get riders per team since I can't pass any arguments in templates?

Upvotes: 0

Views: 46

Answers (2)

D.Nibon
D.Nibon

Reputation: 2919

A more explicit solution is to use related_name on your Team FK.

team = models.ForeignKey(Team, related_name='riders')

An loop that field set.

{% for team in teams %}
    {% for rider in team.riders.all %}
    {% endfor %}
{% endfor %}

Upvotes: 0

Jayground
Jayground

Reputation: 1877

team.rider_set.all()

you can get all riders which is related to your team.

Upvotes: 3

Related Questions