Python 如何迭代对象的字段值?

Python 如何迭代对象的字段值?,python,django,html-table,field,Python,Django,Html Table,Field,在django项目中,我尝试如下方式显示报告: Heading: Field1 Field2 Field3 of Type A Field3 of Type B Data: Record1Value1 Record1Value2 Record1Value3 Record2Value1 Record2Value2 Record2Value3

在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列表,但按type='type a'筛选。Record2Value3属于值3的列表,由type='type B'过滤。因此,在my 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%}
实际上不起作用,因为它无法识别函数和值3a属于同一个对象:objects3a。我必须写一个forms.py来完成这项工作吗?如果是,怎么做?(请注意,我不能在forms.py中声明对象,因为我必须在views.py中获取用户输入)

还有,有没有办法简化代码?如此多的forloop使得加载数据几乎不可能


希望有人能帮助我

如果没有模型实现的所有细节,很难确定,但是您应该能够将
对象
结果直接传递到模板并在那里使用它

我的想法是:

<th>
<td> field1</td>  <td> field2</td>  <td> field3 of type A</td>  <td>field3 of typeB </td>
</th>
{%for object in objects %}

<tr>
<td> {{object.field1}}</td>  <td> {{object.field2}}</td> 
<td> 
{%if object.type==’type A’%}   
{{object.field3}}
{%endif%}
</td>
<td> 
{%if object.type==’type B’%}   
{{object.field3}}
{%endif%}
</td>  
</tr>
{%endfor%}

字段1字段2字段3类型A字段3类型B
{对象%中的对象的%}
{{object.field1}}{{object.field2}}
{%if object.type=='type A%}
{{object.field3}}
{%endif%}
{%if object.type=='type B%}
{{object.field3}}
{%endif%}
{%endfor%}

如果没有模型实现的所有细节,很难确定,但是您应该能够将
对象直接传递到模板,并在那里使用它

我的想法是:

<th>
<td> field1</td>  <td> field2</td>  <td> field3 of type A</td>  <td>field3 of typeB </td>
</th>
{%for object in objects %}

<tr>
<td> {{object.field1}}</td>  <td> {{object.field2}}</td> 
<td> 
{%if object.type==’type A’%}   
{{object.field3}}
{%endif%}
</td>
<td> 
{%if object.type==’type B’%}   
{{object.field3}}
{%endif%}
</td>  
</tr>
{%endfor%}

字段1字段2字段3类型A字段3类型B
{对象%中的对象的%}
{{object.field1}}{{object.field2}}
{%if object.type=='type A%}
{{object.field3}}
{%endif%}
{%if object.type=='type B%}
{{object.field3}}
{%endif%}
{%endfor%}

您现在拥有的是一个嵌套循环。您可能应该重新构造模型,以便在数据库中有一个与您试图向用户显示的视图相匹配的视图。然后,您可以简单地在该视图上循环,并简单地访问字段。简言之,在后端完成繁重的工作,保持模板简单。我认为我无法更改models.py中的数据,因为我根据数据库中的数据声明了模型中的字段。此外,我必须在views.py中获取用户输入,然后使用该数据获取queryset。你能举个例子吗?你现在拥有的是一个嵌套循环。您可能应该重新构造模型,以便在数据库中有一个与您试图向用户显示的视图相匹配的视图。然后,您可以简单地在该视图上循环,并简单地访问字段。简言之,在后端完成繁重的工作,保持模板简单。我认为我无法更改models.py中的数据,因为我根据数据库中的数据声明了模型中的字段。此外,我必须在views.py中获取用户输入,然后使用该数据获取queryset。你能举个例子吗?太棒了!它看起来很简单,但我没有想到我可以直接访问对象的字段。它很好地解决了我的问题。另外,我使用了
{%if'typea'在object.type%}
而不是
{%if object.type='typea%}
,因为该字段的某些数据有换行符。问题解决了。谢谢你!它看起来很简单,但我没有想到我可以直接访问对象的字段。它很好地解决了我的问题。另外,我使用了
{%if'typea'在object.type%}
而不是
{%if object.type='typea%}
,因为该字段的某些数据有换行符。问题解决了。谢谢