在NDB上重复结构属性的WTForms FieldLsit问题

时间:2014-10-10 17:01:45

标签: python google-cloud-datastore app-engine-ndb wtforms

我一直在使用ferris框架,并在为模型生成表单时遇到一些麻烦。 Ferris提供WTForms在html页面上渲染NDB模型的字段。

我有一个包含结构化属性的ndb模型,如下所示:

class Program(BasicModel):
    name = ndb.StringProperty(required=True)
    description = ndb.StringProperty(required=True)
    duration = ndb.StringProperty(required=True)
    contacts = ndb.StructuredProperty(Contact, repeated=True)

class Contact(BasicModel):
    first_name = ndb.StringProperty(required=True)
    last_name = ndb.StringProperty()
    picture_url = ndb.StringProperty()
    email =  ndb.StringProperty()

因为重复联系的结构化属性我可以有很多,所以为了解决这个问题,我为表单创建了一个类,并将contacts字段设置为FieldList:

class ProgramForm(model_form(Program)):
    contacts = fields.FieldList(fields.FormField( model_form(Contact) ), min_entries=1)

这会在html页面上呈现我需要的字段,但在发布表单时,值始终为null。如果我为联系人附加第二组字段,则第二组确实会发送值,但第一组仍为空。

我不知道这是否是适合重复结构化属性的正确方法,还是我缺少的东西。

提前感谢您的帮助

0 个答案:

没有答案