如何使用具有来自不同查询集的值的 Modelchoice 字段创建 Django 表单/表单集

史蒂夫

我想同时显示几个模型选择字段,每个字段都包含来自同一模型但具有不同查询集的数据。为此,我应该使用一个表单集还是多个表单来传递给模板?

我已经尝试过使用表单集。

形式:

class ValueForm(forms.Form):
    value = forms.ModelChoiceField(queryset = ValueTable.objects.all())

看法:

filter_value1 = ValueTabel.objects.filter(group = 1)
filter_value2 = ValueTabel.objects.filter(group = 3)
TmpFormSet = formset_factory(ValueForm, extra=0)
form = TmpFormSet(queryset=filter_value1,filter_value2)

这是我在数据库中的记录:

ValueTable(group, value):
1, Value1
1, Value2
1, Value3
2, Value4
3, Value5
3, Value6


Group(group, attribute)
1, attribute1
2, attribute2
3, attribute1

选择模型组上的属性 1(记录 1 和 3),我将同时显示两个具有以下选项的表单:

modelchoicefield 1:
Value1
Value2
Value3

modelchoicefield 2:
Value5
Value6

如何将两个查询集手动添加到表单集?

Jonathan Liuti

表单集用于为每个模型实例显示一个表单,并且只允许您为所有实例设置自定义参数。

您在这里尝试实现的是动态设置每个实例的值字段的查询集(也就是每个实例都不同),所以我不相信您将能够使用表单集实现您想要的。

只需创建一个循环并通过将正确的查询集传递给每个表单字段来手动实例化每个表单。

使用您提供的示例,它看起来像这样:

value_queryset1 = ValueTabel.objects.filter(group = 1)
value_queryset2 = ValueTabel.objects.filter(group = 3)
value_querysets = [value_queryset1, value_queryset2]
value_forms = []

for value_queryset in value_querysets:
    value_form = ValueForm()
    value_form.fields["value"].queryset = value_queryset
    value_forms.append(value_form)

您还可以覆盖 的init方法ValueForm以使其看起来不那么凌乱,但从技术上讲它们是相同的。

我希望它是有道理的,并帮助你解决这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从查询集创建Django表单

来自分类Dev

如何在Python Django中从表单实例创建表单集

来自分类Dev

表单的Django小部件会被忽略吗?(有关datefield和modelchoice的datepicker和tabindex)

来自分类Dev

Django的多个表单集

来自分类Dev

Django表单集无效

来自分类Dev

Django 和表单集

来自分类Dev

在form.as_p中使用Django表单字段集

来自分类Dev

使用多对多字段保存Django表单集

来自分类Dev

Django表单验证,在字段集上引发错误

来自分类Dev

Django表单集:识别表单集中的无效表单

来自分类Dev

无法删除Django中的表单表单内联表单集

来自分类Dev

Django:预填充表单集

来自分类Dev

django 表单集作为列

来自分类Dev

Django内联表单集(具有可变数量的表单)

来自分类Dev

如何在 Inlineformset 中动态过滤 ModelChoice 的查询集?

来自分类Dev

Django正在验证没有为必填字段选择值的表单集

来自分类Dev

如何订购在Django中动态创建的模型表单字段

来自分类Dev

Django表单覆盖ForeignKey查询集

来自分类Dev

带有表单集的django保存模型

来自分类Dev

Django:没有 li 的表单集错误 /*

来自分类Dev

Django:无需更改表单即可订购表单集

来自分类Dev

Django & js:我的表单集表单相互依赖

来自分类Dev

如何在模板django中渲染表单集并创建垂直表?

来自分类Dev

限制Django内联表单集的外键查询集

来自分类Dev

在Django中以模型表单集获取数据

来自分类Dev

Django动态表单集UpdateView不更新

来自分类Dev

Django模型表单集和Ajax

来自分类Dev

在Django中以模型表单集获取数据

来自分类Dev

django模型表单集仅更新