MultipleChoiceField: проверить все, если ничего не отмечено
То, что я хочу сделать, кажется простым: у меня есть MultipleChoiceField в форме django, которая предлагает идентификатор и псевдо все книги в модели с именем Dico:
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 с несколькими значениями?
Спасибо
1 ответ
Сопровождающее решение проблем и проповедь, руководство по редактированию и редактированию материалов:
if 'dicos' not in getcopy:
for dic in Dico.objects.all():
getcopy.update({'dicos': dic.id})