学习加入信息django的多表

时间:2017-03-19 18:12:17

标签: python mysql django

虽然我发现这篇文章Django views.py Version of SQL Join with Multi Table Query很有帮助。它似乎没有帮助我加入表格。我之前有过一个问题的帮助,我以为我得到了它。我想在波士顿企鹅队做以下表演(现在)球员。

我目前试图将其拉出来的代码是

Player.objects.filter(team__all_teams__contains='boston', player__curr_team__contains="Penguins")

无论如何,通过推理将我置于我的模型的Player.objects中,并且应该从我的团队中过滤所有与波士顿队伍相关的球队,然后应该拉出所有现有球员。

除了给我答案之外,更好的是链接到视频或文档,以便更好地解释这一点,以便我可以更好地学习它来学习通话功能。

Models.py

from django.db import models

class League(models.Model):
    name = models.CharField(max_length=50)
    sport = models.CharField(max_length=15)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

class Team(models.Model):
    location = models.CharField(max_length=50)
    team_name = models.CharField(max_length=50)
    league = models.ForeignKey(League, related_name="teams")

class Player(models.Model):
    first_name = models.CharField(max_length=15)
    last_name = models.CharField(max_length=15)
    curr_team = models.ForeignKey(Team, related_name="curr_players")
    all_teams = models.ManyToManyField(Team, related_name="all_players")

views.py  only line i need help with rest works fine if i take out that line

"bostonp" : Player.objects.filter(team__all_teams__contains='boston', player__curr_team__contains="Penguins") ,


index.html   only section that doesnt work take it out and it works

<h5>Question 2</h5>
         {% for whatever in bostonp %}
        <li>{{whatever.team_name}}</li>
        {% endfor %}
        </ol>

1 个答案:

答案 0 :(得分:1)

试试这个(这将获取player个实例):

bostonp = Player.objects.filter(curr_team__team_name__contains='Penguins')

然后在你的模板中:

{% for player in bostonp %}
    <li>{{ player.first_name }} {{ player.last_name }}</li>
{% endfor %}