Django表单:两个modelmultipechoicefields,相同的模型,不同的查询集,相同的HTML名称

Django表单:两个modelmultipechoicefields,相同的模型,不同的查询集,相同的HTML名称,django,django-forms,Django,Django Forms,我需要在Django表单上设置两个独立但相关的ModelMultipleChiceField。两个字段使用相同的模型,但使用不同的查询集。我需要将它们分开,以便可以在不同的位置渲染它们,但我需要HTML名称在两者之间相同,以便POST变量名称匹配 我能得到的最接近的结果是添加具有不同属性名称的字段——但这让我只剩下两个POST变量,而不是一个。我希望将&tags和&more_tags选项合并到&tags中 Forms.py: from django.forms import ModelMulti

我需要在Django表单上设置两个独立但相关的ModelMultipleChiceField。两个字段使用相同的模型,但使用不同的查询集。我需要将它们分开,以便可以在不同的位置渲染它们,但我需要HTML名称在两者之间相同,以便POST变量名称匹配

我能得到的最接近的结果是添加具有不同属性名称的字段——但这让我只剩下两个POST变量,而不是一个。我希望将&tags和&more_tags选项合并到&tags中

Forms.py:

from django.forms import ModelMultipleChoiceField, CheckboxSelectMultiple
from myproject.models import Tag

class MyForm(forms.form):
    tags = ModelMultipleChoiceField(queryset=Tag.objects.qs_a(), widget=CheckboxSelectMultiple)
    more_tags = ModelMultipleChoiceField(queryset=Tag.objects.qs_b(), widget=CheckboxSelectMultiple)
{{ form.tags }}
{{ form.more_tags }}
模板:

from django.forms import ModelMultipleChoiceField, CheckboxSelectMultiple
from myproject.models import Tag

class MyForm(forms.form):
    tags = ModelMultipleChoiceField(queryset=Tag.objects.qs_a(), widget=CheckboxSelectMultiple)
    more_tags = ModelMultipleChoiceField(queryset=Tag.objects.qs_b(), widget=CheckboxSelectMultiple)
{{ form.tags }}
{{ form.more_tags }}
我采用了几种不同的方法,但遇到了一些困难——我尝试将查询集合并到一个字段中,并在模板中迭代它们,但是{{form.tags.field.choices}}无法处理呈现。我也尝试过清理表单的干净方法,但还是迷路了


有人能帮我指出正确的方向吗?提前感谢。

两个POST变量真的那么糟糕吗?您将如何处理标签?将它们分配给某个模型实例?表单将如何在POST后使用一个变量+验证失败后决定将这些标记放在何处(选择了哪些标记)?我需要将所述的变量传递给外部服务,以便它们确实需要匹配。我将使用两个字段并在服务器端合并数据,clean()应该在这里工作。另外,您可以使用{{form.fields.tags.choices}}从模板访问表单字段