从对象字典创建Django表单

2024-09-28 22:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得这一定很简单,但是经过几天的尝试,我已经完全没有头绪了。在

我有一个字典,其中的键是对象,值是对象的列表。下面是我如何使用这些信息构造表单:

for object in dictionary:
    name_of_field = object.slug
    name_of_field = forms.ModelMultipleChoiceField(widgets=forms.CheckboxSelectMultiple, queryset=dictionary[object]) 

当然,只需将name_Of_字段放在那里两次并不能生成动态命名的字段。它实际做的是使用它迭代的最后一个对象创建一个名为“name_of_field”的字段。我希望它能为字典中的每个键创建一个字段,使用key对象的slug和该键值的选择集命名。在

有没有一种方法可以遍历这个字典并创建我想要的表单字段?我觉得答案就在于超分类__init__,但我仍然无法思考如何获得具有不同名称的多个字段。在


Tags: of对象name信息表单field列表for
1条回答
网友
1楼 · 发布于 2024-09-28 22:20:21

你不会说你在哪里使用这些代码。您应该将它放入表单的__init__方法中,从中可以引用self.fields

class DynamicForm(forms.Form):
    def __init__(self, *args, **kwargs):
        dynamic_fields = kwargs.pop('dynamic_fields')
        super(DynamicForm, self).__init__(*args, **kwargs)
        for key, value in dynamic_fields:
            self.fields[key.slug] = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=value)

相关问题 更多 >