Django无法使用动态字段显示模型数据

时间:2013-12-03 08:25:37

标签: python django model html-table field

我的目录应用程序有一个预定义的各种不同的模型,每个模型都需要选择并返回其相应的对象。因此,由于我的模型很多,并且用户需要分别选择每个模型,我创建了一个动态表单,它传递了我的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这样的事情,但动态字段不是硬编码的。

1 个答案:

答案 0 :(得分:1)

模型没有f属性,这就是解析模板变量的方式。如果您想使用modf进行动态查找,则需要编写一个简单的模板过滤器。