Недопустимый выбор: Невозможно выбрать значение ReferenceProperty в SelectField wtform - PullRequest
2 голосов
/ 21 июня 2011

Я пытаюсь использовать ReferenceProperty в форме для создания / редактирования записи, но ничего не происходит.

У меня есть:

class Type(db.Model):
    name        = db.StringProperty()



class Entry(db.Model):
    type            = db.ReferenceProperty(Type, required=False)

class EntryForm(Form):
    _type_list = []
    for type in Type.all():
        _type_list.append((type.key(),type.name))
    type            = fields.SelectField(u'Type of entry', choices = _type_list)

и обработчик редактирования:

def post(self, **kwargs):
    self.form = EntryForm(self.request.form)
    if self.form.validate():
        values = {
            'type': models.Type.get_by_key_name(self.form.type.data).key(),
        }
        entry = Entry(**values)
        entry.put()

но у меня всегда есть: Неверный выбор

Кто-нибудь знает, как работать с ReferenceProperty в wtforms SelectField или у вас есть рабочий образец для этого?

1 Ответ

1 голос
/ 22 июня 2011

Я решаю свою проблему с этими изменениями в классе Form:

class EntryForm(Form):
    _type_list = []
    for type in Type.all():
        _type_list.append((type.key().id(),type.name))
    type            = fields.SelectField(u'Type of entry', choices = _type_list, coerce=int)

и редактирую обработчик:

def post(self, **kwargs):
    self.form = EntryForm(self.request.form)
    if self.form.validate():
        values = {
            'type': models.Type.get_by_id(self.form.type.data),
        }
        entry = Entry(**values)
        entry.put()

Но если кто-нибудь знает более элегантное решение, милости просим!

...