我想做的事情似乎很简单:我有一个 django 形式的 MultipleChoiceField,它在一个名为 Dico 的模型中提出所有书籍的 id 和 pseudo :
class FiltreMonoForm(forms.Form):
dico_choices = []
for dic in Dico.objects.all().order_by('pseudo'):
dico_choices.append((dic.id, dic.pseudo))
dico_choices=tuple(dico_choices)
dicos = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=dico_choices, initial=[c[0] for c in dico_choices], label="Diccionaris sorsas")
我在视图中返回此表单:
def monollist(request):
if request.GET:
getcopy = request.GET.copy()
form = FiltreMonoForm(getcopy)
dicos = form.cleaned_data['dicos']
else:
form = FiltreMonoForm()
如果用户没有检查任何书籍,我希望检查所有书籍。就像是 :
if request.GET:
getcopy = request.GET.copy()
form = FiltreMonoForm(getcopy)
dicos = form.cleaned_data['dicos']
for dic in Dico.objects.all().order_by('pseudo'):
dico_choices.append((dic.id, dic.pseudo))
dico_choices=tuple(dico_choices)
if len(dicos)==0:
form['dicos']=dico_choices
但我找不到如何更改 MultipleChoicesField 的值。我试过了
form.data['dicos']=dico_choices
但似乎我只能给 form.data['dicos'] 一个值,它不会接受列表或元组。
我试图在我的表单中覆盖 __init__ 方法
self.data.update(dicos=dico_choices)
但我有同样的问题,只有当 dico_choices 是单个值时它才有效。
你知道如何用多个值覆盖我的 MultipleChoiceField 吗?
谢谢