Я пытаюсь реализовать form.ChoiceField () со значениями из представления.
Я уже могу это сделать, если объявлю выбор в файле forms.py, но это не то, что мне нужно.
views.py:
def add_crime(request):
values = [('1','um'),('2','dois'),('3','tres')]
if request.method == 'POST':
form = AddCrimeForm(request.POST, values)
if form.is_valid():
# do stuff
return redirect('show_crime')
else:
form = AddCrimeForm(request.GET)
return render(request, 'add_crime.html', {'form': form})
forms.py:
class AddCrimeForm(forms.Form):
tests = forms.ChoiceField()
def __init__(self, testList, args, **kwargs):
self.testList = testList
super(AddCrimeForm,self).__init__(*args, **kwargs) # testList not in args!
self.fields['tests'].widget = forms.CheckboxSelectMultiple()
self.fields['tests'].choices = self.testList
Ошибка:
AttributeError: 'tuple' object has no attribute 'get'
Исходя из отзывов, я должен реализовать другой __init__
с одним аргументом в forms.py? Это то, что я бы попробовал в Java.
Моя конечная цель - реализовать два ChoiceField, и второе будет зависеть от первого. Есть ли лучший способ?