django templatetags不返回正确的数据

时间:2011-02-21 09:52:51

标签: django django-views django-templates

我已经构建了一个小型模板标签,可以查看我的数据库,并根据记录的最受欢迎的奖杯进行计算。

templatetag如下所示:

@register.inclusion_tag('trophies/trophies.html')
def trophies():
    return { 'trophies': Trophies.objects.values("specie").annotate(Count("id")).order_by()}

奖杯/ trophies.html

{% for obj in trophies %}
    <li><a href="/trophy-room/browse/?specie={{ obj.specie }}">{{ obj.specie }}</a></li>
{% endfor %}

奖杯模型

class Trophies(models.Model):
    user = models.ForeignKey(User)
    specie = models.ForeignKey(Specie)

物种模型

class Specie(ImageModel):
    species = models.CharField(max_length=50, unique=True, verbose_name='Common Name')

正在运行{{ obj.specie }}会返回ID,而正在运行{{ obj.specie.species }}则不返回任何内容。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

试试这个:

@register.inclusion_tag('trophies/trophies.html')
def trophies():
    return { 'trophies': Trophies.objects.values("specie", "specie__species").annotate(Count("id")).order_by()}

在模板中:

{{ obj.specie__species }}

请参阅相关问题:Display Django values() on Foreign Key in template as object instead of its id