У меня есть две модели, EqTD (EquivalentTextDescription) и местоположение. EqTD имеет много отношения к местоположению. Мне нужно составить список всех EqTD, упорядоченных по имени местоположения («имя» - это поле в модели местоположения). Я получаю набор запросов EqTD таким образом:
tEqTDs = EqTD.objects.order_by('location__name')
, который, я надеюсь, создаст дубликаты, если они существуют, когда один и тот же EqTD связан с несколькими местоположениями.
В шаблоне HTML я хочу использовать {% ifchanged%}, чтобы поместить заголовок с именем местоположения над каждой группой EqTD. Тем не менее, этот код:
{% for eqtd in object_list %}
{% ifchanged %}
<tr><td colspan="2"><h3>
{{ eqtd.location.name }}
</h3></td></tr>
{% endifchanged %}
...
{% endfor %}
ничего не выводит. Я понял, что eqtd.location.name, вероятно, бессмысленно. В каком месте?
Было предложено использовать annotate () для добавления имени местоположения к каждому элементу в наборе запросов, например:
tEqTDs = EqTD.objects.annotate( eqtd_loc = 'location__name').order_by('eqtd_loc')
но это приводит к ошибке атрибута: объект 'str' не имеет атрибута 'lookup'.
Неужели annotate () ожидает вызова?
Этот должен быть общим шаблоном. Что за ключ?