2017-03-19 36 views
0

虽然我觉得这个职位Django views.py Version of SQL Join with Multi Table Query有帮助。它似乎并不能帮助我减少连接表。我早些时候对一个问题提供了帮助,我想我已经得到了答案。我正试图在波士顿企鹅队(Boston Penguins)上进行以下表演(现任)球员。学习多表加入信息django

代码目前我还试图拉它

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

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

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

,然后在模板:

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

{%用于任何在bostonp%} \t \t

  • {{ whatever.curr_team}}
  • \t \t {%endfor%}如果不是,应该把它拉到html中? –

    +0

    没有同样的问题,不拉的信息的HTML我在想你的代码的意见,但HTML没有拉信息 –