2017-03-19 35 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沒有拉信息 –