Django MultipleChoiceField 不更新表单重载中的初始数据
我正在尝试在一个表单中为多个选择字段加载默认值。
如果我在多个选择字段里面给初始变量,它是可以正常工作的:
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”这个东西是从哪里来的?你的例子中使用了它,但并没有定义这个变量。