0

在我的模板中,我想在不同的表中使用 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>

是否可以?

4

1 回答 1

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>

如果您在模型中添加字段,则必须正确计数并更新数字,但至少您没有其他需要更改的地方。没有额外的模型,没有额外的代码,所以没有额外的查询。

解决了!

于 2013-10-22T13:01:33.513 回答