在不同的表中显示表单字段

时间:2013-10-22 10:19:22

标签: django templates field

在我的模板中,我想在不同的表格中使用for循环显示模型的所有字段。每个表都有不同数量的字段。我唯一知道的是字段的顺序。

我的模特:

class Act(models.Model):
    #table_1
    my_field=models.IntegerField(max_length=4, blank=False, null=False)
    bar=models.IntegerField(max_length=2, blank=False, null=False)
    ...

    #table_2
    test=models.CharField(max_length=2, blank=True, null=True, default=None)
    my_new_field=models.CharField(max_length=2, blank=True, null=True, default=None)
    blabla=models.CharField(max_length=2, blank=True, null=True, default=None)
    ...

    #table_3
    foo=models.IntegerField(max_length=2, blank=False, null=False)
    ...

我的模板:

<table id="table_1">
    <!-- display my_field and bar -->
    {% for field in form %}
    {% endfor %}
</table>

<table id="table_2">
    <!-- display test, my_new_field and blabla -->
    {% for field in form %}
    {% endfor %}
</table>

<table id="table_3">
    <!-- display foo -->
    {% for field in form %}
    {% endfor %}
</table>

有可能吗?

1 个答案:

答案 0 :(得分:0)

感谢Anto Vinish,我找到了一个可接受的解决方案:使用slice

<table id="table_1">
    <!-- display my_field and bar -->
    {% for field in form|slice:":10" %}
    {% endfor %}
</table>

<table id="table_2">
    <!-- display test, my_new_field and blabla -->
    {% for field in form|slice:"10:25" %}
    {% endfor %}
</table>

<table id="table_3">
    <!-- display foo -->
    {% for field in form|slice:"25:" %}
    {% endfor %}
</table>

如果在模型中添加字段,则必须计算并更新数字,但至少您没有其他任何可更改的内容。没有额外的模型,没有额外的代码,所以没有额外的查询。

解决!