我需要使用Django从我的数据库中显示一个表.显而易见的方法是手动输入表格标题并循环查询结果model.objects.all().但是,由于非常懒惰,我想自动执行此操作,即从模型加载所有字段到内省以显示为列标题并加载所有字段值以显示为行.这种方法也可以节省一些时间,因为我不需要在模型更改时更新模板代码.我得到了它的工作,但有两个问题:
这是我的代码.请注意代码工作正常,所以我会跳过所有导入,因为它们是正确的:
views.py我使用序列化器来序列化数据,这是我在stackoverflow上读到的一个技巧
def index(request):
fields = MyModel._meta.fields
data = serializers.serialize("python", MyModel.objects.all())
context_instance = RequestContext(request, {
'data' : data,
'fields' : fields,
})
return TemplateResponse(request, 'index.html', context_instance)
Run Code Online (Sandbox Code Playgroud)
template/index.html:请注意,我必须通过切掉字段列表的第一个元素来切掉ID列
{% with fields|slice:"1:" as cached_fields %}
<table>
<thead>
<tr>
{% for field in cached_fields %}
<th>{% get_verbose_name field %}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for instance in data %}
<tr>
{% for field in cached_fields %}
<td>{% get_value_from_key instance.fields field %}</td>
{% endfor %} …Run Code Online (Sandbox Code Playgroud)