Django MultipleChoiceField 不更新表单重载中的初始数据

0 投票
1 回答
751 浏览
提问于 2025-04-17 10:10

我正在尝试在一个表单中为多个选择字段加载默认值。

如果我在多个选择字段里面给初始变量,它是可以正常工作的:

class UserPreferences(forms.Form):
    my_form = forms.MultipleChoiceField(
        widget = forms.CheckboxSelectMultiple(),
        choices = MY_CHOICES,
        initial = MY_INITIAL_DICT)

但是如果我试着从数据库中获取与用户相关的初始值,并像下面这样更新初始值,我的表单初始变量却没有改变,还是空的:

class UserPreferences(forms.Form):
    my_form = forms.MultipleChoiceField(
        widget = forms.CheckboxSelectMultiple(),
        choices = MY_CHOICES)

    def __init__(self, user):
        initial = make_my_dict_from( MyModel.objects.filter(user=user) )

        super(UserPreferences, self).__init__(initial, empty_permitted)

如果我用一个简单的选择字段这样做是可以的,但在多个选择字段中就不行。

谢谢大家的建议!

1 个回答

0

试试这个:

super(UserPreferences, self).__init__(initial=initial)

你需要像这样使用关键字参数。Python 不会关注你的变量名,而是会使用正确的位置。

“empty_permitted”这个东西是从哪里来的?你的例子中使用了它,但并没有定义这个变量。

撰写回答