Django SelectMultiply widjet:如何将初始值设置为;精选;

Django SelectMultiply widjet:如何将初始值设置为;精选;,django,forms,Django,Forms,在我的ModelForm的init方法中,我设置了字段的类型: self.fields['gwlist']=forms.modelmultipechoicefield(label='网关列表:', queryset=Gateway.objects.all(), initial={'gwlist':initial_list}) 当表单向用户显示时,我想设置在整个网关列表中选择的一些网关。但我不能 可能吗?您应该将首字母作为所选网关(而不是dict)的列表传递。例如: initial_list =

在我的ModelForm的init方法中,我设置了字段的类型:

self.fields['gwlist']=forms.modelmultipechoicefield(label='网关列表:',
queryset=Gateway.objects.all(),
initial={'gwlist':initial_list})
当表单向用户显示时,我想设置在整个网关列表中选择的一些网关。但我不能


可能吗?

您应该将
首字母
作为所选网关(而不是dict)的列表传递。例如:

initial_list = [Gateway.objects.get(pk=1)]

self.fields['gwlist'] = forms.ModelMultipleChoiceField(
                                            label='List of gateways:',
                                            queryset=Gateway.objects.all(),
                                            initial=initial_list)
更新:如果在
表单
级别定义
gwlist
字段,则应在表单的
\uuuu init\uuu()构造函数中设置
初始

class DPForm(ModelForm):

    gwlist = forms.ModelMultipleChoiceField(label='List of gateways:',
                                            queryset=Gateway.objects.all())

    def __init__(self, *args, **kwargs):
        super(DPForm, self).__init__(*args, **kwargs)
        init_list = [Gateway.objects.get(pk=11)]
        self.fields['gwlist'].initial=init_list
表格的工作版本(适用于我):

类拨号对等格式(ModelForm):
gwlist=forms.modelmultipechoicefield(标签='СПчСчччччч:',
queryset=Gateway.objects.all()
定义初始化(self,*args,**kwargs):
超级(拨号对等格式,自我)。\uuuuu初始化(*args,**kwargs)
init_list=[Gateway.objects.all()]
self.initial['gwlist']=init_list
我以前读过,字段的更新初始值无效。所以,我们需要更新孔形状的初始值。还有这根绳子上的魔弹: self.initial['gwlist']=init_list

现在我需要的是“选择”参数


Django 1.7.5

谢谢你,卡塔瓦兰。我试着使用list、tuple和dict。但是,我没有“selected”参数。我检查了这个精确的代码-它工作正常。请用列表
首字母
显示您的代码。pastebin中的代码与您问题中的代码不同。见更新的答案。我同意@catavaran,关于init方法。我放置了[表单类的新版本。仍然没有成功。我知道,您的建议是正确的,但我的建议仍然没有“选定”。也许,我有错误的其他内容。我复制并测试了您的代码,它没有任何问题。重新启动服务器并重新加载页面。请注意,然后测试
初始值,您不应该使用浏览器中的“刷新”按钮可重新加载页面。按
Ctrl-L
,然后按
Enter