#python #django
#python #django
Вопрос:
Я обрабатываю набор запросов в представлении, чтобы получить сводку данных, и мне нужно иметь возможность перебирать результирующий набор данных в моем шаблоне. Я сделал это нормально с ключом и единственным значением, создав словарь, а затем используя .items для работы с парами ключ-значение, используя:
{% for id,total in list_summary.items %}
<tr class="{% cycle 'row1' 'row2' %}" >
<td>{{id}}</td>
<td>{{total}}</td>
</tr>
{% endfor %}
Проблема в том, что мне нужно больше, чем просто ключ и значение. Мне нужно несколько значений. Я попытался создать словарь, используя словарь в качестве значения, но в шаблоне я не могу получить значения в словаре.
Какую подходящую структуру данных нужно создать, чтобы это работало? Я подумал о временной модели или создании пользовательского тега шаблона для доступа к значениям вложенного словаря, но я думаю, что должен быть лучший способ обработки данных набора запросов перед отправкой их в представление.
Мой код просмотра находится здесь:
lists=lists.objects.filter(user_id=user_id)
list_summary={}
# make a dictionary that we wil iterate over in template. The dictionary has the total spend for each deal
for list in lists:
id = list.id
name = list.deal_name
price = list.normal_price
quantity = list.quantity
total = price * quantity
try:
list_item=list_summary[id]
old_total=list_item['total']
list_summary[id]={'name':name, 'total':old_total total}
except:
list_summary[id]={'name':name, 'total':total}
context = {
'list_summary':list_summary,
}
return render_to_response("lists.html", context)
Любая помощь будет высоко оценена!
Заранее большое спасибо
Богатый
Комментарии:
1. Вы уже пробовали агрегацию ?
2. Я подозреваю, что агрегация сделала бы это, если бы я мог понять, как умножить стоимость продажи на количество, а затем добавить ее в набор запросов, который имеет отдельный набор идентификаторов сделок с аннотированным итогом. Я просто не вижу, как это сделать
Ответ №1:
Я попытался создать словарь, используя словарь в качестве значения, но в шаблоне я не могу получить значения в словаре.
Почему бы и нет? Значения также являются парами ключ / значение..
{% for list_id, dict in list_summary.items %}
list_id: {{ list_id }}
{% for k, v in dict.items %}
key: {{ k }} <!-- name, total -->
value: {{ v }}
{% endfor }
{% endfor %}
{% for list_id, value in list_summary.items %}
list_id: {{ list_id }}
Name: {{ value.name }}
Value: {{ value.value }
{% endfor %}
Комментарии:
1. Это сделало свое дело, было просто немного запутанно перебирать что-то, из чего я просто хотел получить 2 значения. Я все еще не уверен, что это лучший способ сделать это, конечно, есть лучший способ построения данных, чтобы я мог повторять список плоских объектов, а не вставлять циклы for .
2. Также мне пришлось использовать общее значение в качестве ключа и имя сделки по мере их значения, это просто странно!
3. Если вы хотите получить доступ к определенным атрибутам или элементам в шаблоне, вы можете использовать точечную нотацию, и django попробует все виды поиска, чтобы получить нужное вам значение.
{{ dict.name }}
должно дать вам нужное значение