У меня есть такие модели:
Item:
name
desc
AttrGroup:
name
order
AttrName:
name
group.ForeinKey(AttrGroup)
order
AttrVal:
value
attr.ForeinKey(AttrName)
item.ForeinKey(Item)
Итак, я хочу сравнить атрибуты n элементов в списке items_id = [1,3,7, ...]
Во взглядах я делаю что-то подобное:
attrs = AttrVal.object.filter(item__id__in=items_id)
и отправьте в шаблоны. Но я собираюсь запутаться с тем, как организовать список для интерфейса.
Шаблоны должны выглядеть так:
<table>
{% for g in group %}
<tr class="group_name">{{ g.name }}</tr>
{% for a in attrs %}
<tr>
<td>{{ a.name }}</td>
{% for i in items_id %}
<td>{{ value of item 'i' }}</td>
{ %endfor %}
</tr>
{% endfor %}
{% endfor %}
</table>
Я думаю, у этой проблемы будет хорошее решение. Спасибо!
Обновление:
Следуя хорошему решению @Lott, я нашел способ показать данные в шаблонах. Я использую код нравится это:
{% for g in groups %}
<tr class="title_row">
<td class="group_name" colspan="{{ no_items }}">{{ g.0 }}</td>
</tr>
{% for a in g.1 %}
<tr>
<td>{{ a.attr.name }}</td>
{% for i in comparing_items %}
<td>{% if a.item.id == i %}{{ a.value }}{% endif %}</td>
{% endfor %}
</tr>
{% endfor %}
{% endfor %}
И оно появляется:
<table>
<tr>
<td>Attr Name 1</td>
<td>Attr Value of Item 1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Attr Name 2</td>
<td>Attr Value of Item 1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Attr Name 1</td>
<td></td>
<td></td>
<td></td>
<td>Attr Value of Item 4</td>
</tr>
</table>
Моя цель состоит в том, чтобы перечислить один и тот же атрибут элементов [1,2,3, ...] в одной строке. HTML-код должен быть таким:
<table>
<tr>
<td>Attr Name 1</td>
<td>Attr Value of Item 1</td>
<td>Attr Value of Item 2</td>
<td>Attr Value of Item 3</td>
<td>Attr Value of Item n</td>
</tr>
<tr>
<td>Attr Name 2</td>
<td>Attr Value of Item 1</td>
<td>Attr Value of Item 2</td>
<td>Attr Value of Item 3</td>
<td>Attr Value of Item n</td>
</tr>
<tr>
<td>Attr Name m</td>
<td>Attr Value of Item 1</td>
<td>Attr Value of Item 2</td>
<td>Attr Value of Item 3</td>
<td>Attr Value of Item n</td>
</tr>
</table>
Большое спасибо!