【问题标题】:display form fields in different tables在不同的表格中显示表单域
【发布时间】:2013-10-22 10:19:22
【问题描述】:

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

有可能吗?

【问题讨论】:

  • 你可以使用form.fieldname和form.fieldname每次手动输入
  • 如果有数百个字段怎么办?
  • 你要在模板中使用数百个字段吗,还有其他方法可以使用外键连接的三种不同模型
  • 第一个表:10 个字段,第二个:15,第三个:35。创建不同的模型是一个好的/可接受的解决方案吗?
  • 如果您知道计数,您也可以使用 slice 选项....,{% for field in form|slice:":10" %} 即使不是,它也会显示多达 10 个字段为您的问题提供最佳解决方案,但提示您完成工作

标签: django templates field


【解决方案1】:

感谢 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>

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

解决了!

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多