Django:对表单字段进行分组

Posted

技术标签:

【中文标题】Django:对表单字段进行分组【英文标题】:Django: Grouping form fields 【发布时间】:2021-08-31 02:29:13 【问题描述】:

我想对不同的表单域进行分组,如下例所示: forms.py

    a = SelectField()
    a.group = "Testgroup1"
    b = CheckboxField()
    b.group = "Testgroup1"
    c = IntegerField()
    c.group = "Testgroup2"
    d = IntegerField()
    d.group = "Testgroup2"
    e = CheckboxField()
    e.group = "Testgroup3"
    f = IntegerField()
    f.group = "Testgroup3"

然后在模板中是这样的:

% for group in form %
    group 
   % for field in form %
      <div>  field  </div>
   % endfor %
% endfor %

我想要这样的结果: enter image description here

有人能给我一点建议吗? 提前谢谢你。

【问题讨论】:

【参考方案1】:

这里有几个解决方案:

最简单的做法是:

<div id="group1">
   form.a 
   form.b 
</div>
<div id="group2">
   form.c 
   form.d 
</div>

如果您要处理很多字段,那么您可能希望在模板中进行过滤。这里有几个选项:

令人讨厌的是,Django 在设计上不包含 filter 过滤器作为模板语言的一部分,但您可以按以下方式添加方法:

How do I perform query filtering in django templates

注意事项,Jinja is supported by Django out of the box 和 allows filtering like you would want。

请不要忘记您将按 field.field.group 进行排序。

【讨论】:

是的,我只是做了一个小例子。我认为这将是 20 个组和每组 10 个字段。 更新了我的答案

以上是关于Django:对表单字段进行分组的主要内容,如果未能解决你的问题,请参考以下文章

Django 表单字段分组

如何创建根据其中一个字段对一个实体的对象进行分组的表单

Django 酥脆的表单可以与自定义小部件一起使用吗?

如何对 Django Select 小部件中的选择进行分组?

在 JSON 输出中对 Extjs 表单字段进行分组

Django之路——form modelform formset modelformset的各种用法