Я пытаюсь отправить динамическое количество выбранных флажков в obj.html в функцию / items.Я получаю сообщение об ошибке
"Select a valid choice. 1234 is not one of the available choices."
Но вы заметите, что я печатаю набор вариантов выбора из # views.py, он выводит, что 1234 содержится в плоском наборе запросов с кавычками вокруг него.
print(form.fields['choices'].queryset)
# Console output
['1234', '1243',...]
Почему 1234 не является одним из доступных вариантов?Я попытался поместить кавычки вокруг атрибута значения в форме ввода, но это не работает.Функция items останавливается, потому что данные недействительны.Как я могу решить эту проблему?
# forms.py
class ItemForm(forms.Form):
choices = forms.ModelMultipleChoiceField(widget = forms.CheckboxSelectMultiple,
queryset = Sampledata.objects.none())
# views.py
def obj(request, object_id,):
data = Sampledata.objects.filter(id=object_id)
form = ItemForm()
form.fields['choices'].queryset = list(data.values_list('value', flat=True))
print(form.fields['choices'].queryset)
return render(request, 'obj.html', {'data':data,'form':form})
def items(request):
if request.method == 'POST':
form = ItemForm(request.POST)
# check whether it's valid:
if form.is_valid():
...
# obj.html
<form action="/items" method="post">
# Many of these spread out throughout the page
{% for obj in data %}
<input type="checkbox" name="choices" value="{{obj.value}}">
{% endfor %}
<input type="submit" value="Submit">
Обновлен, но все еще появляется та же ошибка:
def items(request, object_id):
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = ItemForm(request.POST)
data = Sampledata.objects.filter(id=object_id)
form.fields['choices'].queryset = (data.values_list('value', flat=True))
# check whether it's valid:
if form.is_valid():