在我的ModelForm的 init 方法中,我设置了字段类型:
self.fields['gwlist'] = forms.ModelMultipleChoiceField(label='List of gateways:',
queryset=Gateway.objects.all(),
initial={'gwlist': initial_list})
我希望在为用户显示表单时设置在整个网关列表中选择的一些网关。但我不能。
有可能吗?
答案 0 :(得分:1)
您应该将initial
作为选定网关列表(不是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
级别定义Form
字段,则应在表单的initial
构造函数中设置__init__()
:< / p>
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
答案 1 :(得分:0)
表格的工作版本(对我来说):
class DialpeerForm(ModelForm):
gwlist = forms.ModelMultipleChoiceField(label='Список гейтвеев:',
queryset=Gateway.objects.all())
def __init__(self, *args, **kwargs):
super(DialpeerForm, self).__init__(*args, **kwargs)
init_list = [Gateway.objects.all()]
self.initial['gwlist'] = init_list
我之前读过,更新字段的初始值不起作用。因此,我们需要更新孔形式的初始化。和这个字符串中的魔术子弹: self.initial ['gwlist'] = init_list
现在我需要“选择”参数。
Django 1.7.5