Недопустимый выбор: Невозможно выбрать значение ReferenceProperty в SelectField wtform
Я пытаюсь использовать 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()
но у меня всегда есть: неправильный выбор
Enyone знает, как работать с ReferenceProperty в wtforms SelectField или у вас есть рабочий образец для этого?
1 ответ
Решение
Я решаю свою проблему с этими изменениями в классе 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()
Но если кто-нибудь знает более элегантное решение, милости просим!