我有一個模型在特定的球員有統計數據的擊球。玩家信息在Master中,與Batting中的外鍵相關。不能從外鍵打印名稱而不是ID
class Batting(models.Model):
player = models.ForeignKey(Master)
year = models.IntegerField()
homeruns = models.IntegerField()
...
def __unicode__(self):
#return "%s %s %s" % (self.player.name_first, self.player.name_last, self.team)
return "%s %s" % (self.player.name_first, self.player.name_last)
class Master(models.Model):
id = models.CharField(max_length=30, primary_key=True)
name_first = models.CharField(max_length=30)
name_last = models.CharField(max_length=30, db_index=True)
...
def __unicode__(self):
return "%s %s" % (self.name_first, self.name_last)
我有兩個疑問:在2013年
home_runs = Batting.objects.filter(year=max_year['year__max']).order_by('-homeruns')[:20]
home_runs_all_time = Batting.objects.values('player').annotate(hrs=Sum('homeruns')).order_by('-hrs')[:20]
第一個列出的前20名本壘打擊球手的第二個涉及.values()和.annotate()所產生本壘打的總和每個球員並列出他們。第一次在我的模板正常工作:
<h2>Most Home Runs in a Season -- {{ year }}</h2>
<table>
<tr>
<th>Name</th>
<th>Homeruns</th>
</tr>
{% for p in home_runs %}
<tr>
<td>{{ p }}</td><td>{{p.homeruns}}</td>
</tr>
{% endfor %}
</table>
<h2>Most Home Runs All Time</h2>
<table>
<tr>
<th>Name</th>
<th>Homeruns</th>
</tr>
{% for p in home_runs_all_time %}
<tr>
<td>{{ p.player }}</td><td>{{p.hrs}}</td>
</tr>
{% endfor %}
</table>
但在第二打印HTML中的FK ID而不是名稱: 大多數家庭在季節運行 - 2013
Name Homeruns
Chris Davis 53
Miguel Cabrera 44
Pedro Alvarez 36
Edwin Encarnacion 36
多數本壘打所有時間
Name Homeruns
bondsba01 762
aaronha01 755
如何讓第二個查詢返回從主表,而不是關鍵的的Unicode價值?
謝謝,但那並不奏效。我認爲它與.values()方法有關,因爲如果沒有這種方法,頂級主頁在特定的一年運行良好。 (查看兩個查詢) – 2014-10-30 16:17:29
上面應該可以工作。在我的機器上測試了類似的東西。確保你以同樣的方式複製它 – 2014-10-30 17:06:47