代码之家  ›  专栏  ›  技术社区  ›  rom

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

  •  0
  • rom  · 技术社区  · 11 年前

    在我的模板中,我想在不同的表中用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 回复  |  直到 11 年前
        1
  •  0
  •   rom    11 年前

    多亏了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>
    

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

    解决了的!