我一直在使用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。如果我为联系人附加第二组字段,则第二组确实会发送值,但第一组仍为空。
我不知道这是否是适合重复结构化属性的正确方法,还是我缺少的东西。
提前感谢您的帮助