我的目录应用程序有一个预定义的各种不同的模型,每个模型都需要选择并返回其相应的对象。因此,由于我的模型很多,并且用户需要分别选择每个模型,我创建了一个动态表单,它传递了我的views.py检索的模型表名m_tb_name
,并返回相应的模型,如下所示:
*views.py*
def dlist(request):
#get the model table name from the form
m_tb_name= request.POST['model_classes_field']
#retrieve the model using the table name
model_class = get_model('Directories', m_tb_name)
# return all model data
model_list = model_class.objects.all()
# how the data will be handled in list.html template
#get fields and their names
fields = get_model_fields(model_class)
field_names = model_class._meta.get_all_field_names()
print 'You searched for: %r' % m_tb_name
return render(request, 'Directories/list.html', {'m_tb_name':m_tb_name, 'model_class':model_class, 'model_list':model_list, 'fields':fields, 'field_names':field_names})
由于我得到了模型,其字段及其objects.all()已初始化,我尝试使用模型的数据填充表格。但是,在我的模板中,我有这个:
*list.html*
<table>
<tr>
{% for f in fields %}
<th>{{ f.verbose_name }}</th>
{% endfor %}
</tr>
{% for f in fields %}
{% for mod in model_list %}
<tr>
<td> {{mod.f }}</td>
</tr>
{% endfor %}
{% endfor %}
</table>
虽然我期待我的mod.f中的一些数据(特别是我期望模型的每个特定字段的数据)输出为空,但不返回任何内容。任何关于为什么会这样做的想法都会有所帮助。
我的想法是做一些像anwser in this question这样的事情,但动态字段不是硬编码的。
答案 0 :(得分:1)
模型没有f
属性,这就是解析模板变量的方式。如果您想使用mod
的值对f
进行动态查找,则需要编写一个简单的模板过滤器。