Ошибка проверки Django ModelMultipleChoice - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь отправить динамическое количество выбранных флажков в 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():
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...