我datagrid field内有datagrid field( Collective.z3c.form.datagridfield )
它从前端的角度出发。但是,当我提交表格时,收到的数据如下:
'questions': [{'choices': [], 'questionContent': u'Question 1 ', 'typeOfQ': None}]
选择是第二个数据网格,它返回作为空数组。是否有更多的问题可以包含n个选项?我对子表单或小部件知之甚少,不知道创建它们是否是一个可靠的选项。
以下是代码:
class ITableRowSchema(form.Schema):
solution = schema.Bool(
title=u'Correct Answer?', required=False,
)
trueFalse = schema.Choice(
title=u"True or False",
values=[('False'),('True')],
default=('False'),
required=False,
)
choice = schema.Text(title=u"What are the possible choices?",required=False)
class IQuestionSchema(form.Schema):
questionContent = schema.Text(
title=u"What is the question?",
required=False
)
typeOfQ = schema.Choice(
title=u"Question Type",
values=[('True/False'),('Multiple Choice'),('Multiple Select'),('Fill-in-the-Blank'),('Short Answer')],
required=False
)
form.widget(choices=DataGridFieldFactory)
choices = schema.List(title=u"Choices", required=False,
value_type=DictRow(title=u"Choice #", schema=ITableRowSchema))
class IAddContent(model.Schema):
form.widget(questions=BlockDataGridFieldFactory)
questions = schema.List(title=u"8. Create Knowledge Quiz", required=False,
value_type=DictRow(title=u"Questions", schema=IQuestionSchema))
更新 我发现嵌套的DGF从未真正创建过真正的行。如果你有自动附加功能,它们将是TT或AA。 extractData()中将忽略这些行。但是,如果您通过省略必填字段导致表单触发表单违规。它再次构建表并且有效。
修复:确保嵌套的DGF获得为其创建的实际行,一切都会正常工作。 我正在与: python,z3c.forms,plone