В проекте django я пытаюсь отобразить отчет следующим образом:
Heading: Field1 Field2 Field3 of Type A Field3 of Type B
Data: Record1Value1 Record1Value2 Record1Value3
Record2Value1 Record2Value2 Record2Value3
Record3Value1 Record3Value2 Record3Value3
Из которых Record1Value1 и Record2Value1, Record3Value1 принадлежат списку значений1.Это список значений полей объектов в модели.То же самое со списком значений2.Record1Value3 и Record3Value3 принадлежат списку значений3, но фильтруются по типу = 'тип A'.Record2Value3 принадлежат списку значений3, отфильтрованных по типу = «тип B».Поэтому в моем views.py я кодирую, как показано ниже:
objects=model.objects.filter(field=input,…)
values1=objects.values_list(field1, flat=True)
values2=objects.values_list(field2, flat=True)
objects3a= objects.filter(type=’type A’)
objects3b= objects.filter(type=’type B’)
values3a=objects3a.values_list(field3, flat=True)
values3b=objects3b.values_list(field3, flat=True)
functions=objects.values_list(type,flat=True)
На html-странице я использую следующие коды:
<th>
<td> field1</td> <td> field2</td> <td> field3 of type A</td> <td>field3 of typeB </td>
</th>
{%for value1 in values1%}
{%for value2 in values2%}
{%for value3a in values3a%}
{%for value3b in values3b%}
<tr>
<td> {{value1}}</td> <td> {{value2}}</td>
<td>
{%if function==’type A’%}
{{value3a}}
{%endif%}
</td>
<td>
{%if function==’type B’%}
{{value3b}}
{%endif%}
</td>
</tr>
{%endfor%}
{%endfor%}
{%endfor%}
{%endfor%}
То, что я хочу сделать, - это перебирать каждую записьи поместите значения полей каждой записи в соответствующую ячейку, но для field3, если в поле «type» записи указано «type A», поместите значение field3 в столбец «field3 типа A» и оставьте «field3»тип B 'пусто.И наоборот, для типа B.
Проблема заключается в том, что он не выполняет циклический просмотр каждой записи таким образом.Блок кодов:
{%if function==’type A’%}
{{value3a}}
{%endif%}
на самом деле не работает, потому что не распознает функцию и значение3a принадлежит одному и тому же объекту: objects3a.Должен ли я написать forms.py для этого?Если так, то как?(Обратите внимание, что я не могу объявить объекты в forms.py, потому что я должен получить пользовательский ввод в views.py).
Кроме того, есть ли способ упростить коды?Эти многочисленные циклы делают загрузку данных практически невозможной.
Надеюсь, кто-нибудь может мне помочь!