Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Multipechoicefield don';t在表单重载中更新初始数据_Python_Django_Django Forms - Fatal编程技术网

Python Django Multipechoicefield don';t在表单重载中更新初始数据

Python Django Multipechoicefield don';t在表单重载中更新初始数据,python,django,django-forms,Python,Django,Django Forms,我试图在表单重载中加载MultipleChiceField的默认值 因此,如果我给multipleEchoIceField中的初始变量,它会起作用: class UserPreferences(forms.Form): my_form = forms.MultipleChoiceField( widget = forms.CheckboxSelectMultiple(), choices = MY_CHOICES, initial = MY

我试图在表单重载中加载MultipleChiceField的默认值

因此,如果我给multipleEchoIceField中的初始变量,它会起作用:

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)
如果我用一个简单的ChoiceField来做这件事,它会起作用,但不能用MultipleChiceField

谢谢你的建议

试试这个:

super(UserPreferences, self).__init__(initial=initial)
您需要像这样使用关键字参数。Python不会查看变量名,而是使用正确的插槽


“允许的空”是从哪里来的?您的示例确实使用了,但没有定义此变量。

对不起,我没有在init中很好地再现我的真实示例,因为我有更多的参数。当然,对于其余的参数,initial=initial等等是更好、更干净的做法,但这不是我的问题。Django具有多个回声场的特殊行为。无论如何,谢谢你的回答!我使用了多个EchoIceFields,而且似乎没有特殊的行为。