У меня есть данные в базе данных в таком виде:
collection_name|manufacturer|product_type|description|image_url
----------------------------------------------------------------
Testing |FakeCo |Bed |pretty nice|/img/1.jpg
Testing |FakeCo |Desk |pretty bad |/img/2.jpg
Testing |FakeCo |Nightstand |pretty ok |/img/1.jpg
Testing |FakeCo |Draws |pretty nice|/img/3.jpg
Изначально я использовал цикл for для отображения полей каждого результата, который в итоге выглядит примерно так: .
Для примера данных, приведенного выше, я пытаюсь отобразить только первый результат из определенных полей, зная, что они идентичны для всех возвращаемых строк, а затем для остальных полей отображать их, только когда они различны.
Я попытался использовать наборы в моем представлении django, поскольку другой ответ предполагал, что это устранит дубликаты и решит мою проблему.
Мой взгляд на Джанго:
def collection_detail(request, name=None):
template = loader.get_template('/webapps/my_webapp/furniture_site/main_page/templates/main_page/product-detail.html')
products = product.objects.filter(collection_name=name)
collection_name = []
manufacturer = []
description = []
image_url = []
for product in products:
collection_name.append(product.collection_name)
manufacturer.append(product.manufacturer)
description.append(product.description)
image_url.append(product.image_url)
collection_name = set(collection_name)
manufacturer = set(manufacturer)
description = set(description)
image_url = set(image_url)
context={'products': products}
return HttpResponse(template.render(context))
Моя проблема в том, что я не могу ссылаться на эти элементы набора в моем шаблоне.
Например, в моем шаблоне используйте:
{% for instance in products %}
{{ instance.collection_name }} Collection <br />
{% endfor %}
ничего не возвращает, как и
{% for instance in products %}
{{ collection_name }} Collection <br />
{% endfor %}
Как правильно ссылаться на элементы, возвращаемые через представление в шаблоне?
В конечном итоге я пытаюсь получить результат, подобный следующему (описание примечания и название коллекции используются только один раз, а дублированные URL-адреса изображений не возвращаются).