2009-10-21 2 views
10

У меня есть запрос в Django, который вызывает Model.objects.values('item') ... где 'item' - это внешний ключ.Отображать значения Django() на внешнем ключе в шаблоне как на объекте, а не на его id

class Words(models.Model): 
    word = models.CharField() 

class Frequency(models.Model): 
    word = models.ForeignKey(Words) 
    ... 

Таким образом, это возвращает идентификатор элемента и отображается как идентификатор в шаблоне. Как показать фактическое значение элемента в шаблоне вместо идентификатора?

ответ

12

Чтобы передать свойства элементов внешнего ключа, вы должны использовать нотацию поиска «__» в полях. MyModel.objects.values('item__prop1', 'item__prop2', ...) должен работать на вас.

И вы можете распечатать его в шаблонах, указав имена свойств, как это, когда имя переменной шаблона для результата values.

{% for v in values %} 
    Prop1: {{ v.item__prop1 }} 
    Prop2: {{ v.item__prop2 }} 
    ... 
{% endfor %} 
+3

Очевидно Achimnoi использовал 'prop1' в качестве примера - вы должны сделать 'Model.objects.values ​​('word__word')' в представлении и '{{v.word__word}}' в шаблоне. –

+0

Спасибо, работал красиво. – simi

+0

благодарит за совместное использование! – Xiwen