Как сделать поле формы с множественным выбором на движке приложения - PullRequest
1 голос
/ 05 февраля 2010

Я создаю приложение на App Engine и хочу создать поле формы с несколькими вариантами выбора.
Вот моя форма (она использует django.newforms из движка приложения sdk (django 0.96)):

from google.appengine.ext.db import djangoforms
from django import newforms

class KeywordForm(djangoforms.ModelForm):
    class Meta:
        model = Keyword
        exclude = ['site', 'created_at', 'last_update']

    choices = [ (1, 'value1'), (2, 'value2'), (3, 'value3'), (4, 'value4') ]
    server = newforms.fields.MultipleChoiceField(choices = choices)

Проблема заключается в том, что при отправке формы (с одним или несколькими выбранными значениями) у меня появляется эта ошибка проверки: " Введите список значений. "

Я не понимаю, почему ... некоторая помощь по этой проблеме будет очень признательна.
Спасибо ! :)

Редактировать (дополнительная информация):
Вот код подтверждения формы:

 form = forms.KeywordForm(data=self.request.POST)
 if form.is_valid():
     ...

self.request.POST:

UnicodeMultiDict([(u'keyword', u'test'), (u'server[]', u'1'), (u'server[]', u'2')])

1 Ответ

2 голосов
/ 05 февраля 2010

Я нашел решение!

Проблема в том, что словарь self.request.POST предоставляется конструктору моей формы.
Его формат не оценивается функцией MultipleChoiceField.clean () , поэтому я преобразовал ее.

Вот рабочий код проверки:

 args = self.request.arguments()
 data = {}
 for i in args:
     data[i] = self.request.get_all(i)
 form = forms.KeywordForm(data=data)
 if form.is_valid():
     [...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...