django动态模板链接字典到对象字段

时间:2013-12-21 12:39:01

标签: django templates object dictionary field

我正在制作一个动态模板,我希望能够包含它的最后一部分。我的问题:我得到了与对象字段相关的x个字段。但是当我传递另一个模型对象时,它应该显示其他字段。

实施例: 模型1显示对象名称,类别,已批准 模型2显示对象名称,属性,

对于其他变量的东西,我制作一个包含信息的字典,问题是,我不知道如何将对象字段链接到它。 Dictonary发送到模板:

field_map = {'field1': 'Name', 'field2': 'Category', 'field3': 'Approved'}

模板:

{% if objects|length > 0 %}
<table style="padding: 3px;">
    <tr style=" text-align: center;">
    {% for key, value in field_map %}
        <th>{{ value }}</th>
    {% endfor %}
    </tr>
    {% for object in objects %} 
    <tr>
        <td>{{ object.name }}</td>
        <td>{{ object.category }}</td>
        <td>{{ object.approved }}</td>
    </tr>

但现在我想将对象字段添加到field_map字段中。 因为我将发送超过1个对象

希望我能够很好地解释我的问题。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您正试图重新解决已经解决的问题。请使用django-tables2在django中呈现表:https://github.com/bradleyayers/django-tables2

更新:回答OP关于如何删除或编辑分页页脚的评论:

如果您不希望对您的表格进行分页,那么只需将您的表格paginate=None配置为RequestConfig,就像这样:

table = TestTable(Test.objects.all())
RequestConfig(request, paginate=None).configure(table)
return render(request, 'test.html', {'table': table})

如果您想自己编辑页脚,则必须提供新的表格渲染模板。为此,您只需将table.html的内容从此处https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/templates/django_tables2/table.html复制到模板目录即可。然后,您可以根据自己的要求修改此文件,例如,分页部分位于文件末尾的{% if table.page %}{% endif %}之间。

现在,在您创建自定义表格模板后,您需要使用此模板渲染表格。如果您将模板命名为mytable.html,则只需在普通模板中使用以下语法:

{% render_table mytable "mytable.html" %}