Шаблонные теги Django не возвращают правильные данные - PullRequest
0 голосов
/ 21 февраля 2011

Я создал небольшой тег шаблона, который смотрит в мою БД и производит расчеты на основе самых популярных зарегистрированных трофеев.

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 }} возвращает идентификатор, а выполнение {{ obj.specie.species }} ничего не возвращает.

Почему это происходит?

1 Ответ

1 голос
/ 21 февраля 2011

Попробуйте это:

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

И в шаблоне:

{{ obj.specie__species }}

См. Связанный вопрос: Показывать значения Django () на внешнем ключе в шаблоне как объект вместо его идентификатора

...