1

在此处输入图像描述

我在datagrid字段Collective.z3c.form.datagridfield)中有datagrid 字段

它从前端的角度工作。但是,当我提交表单时,收到的数据如下:

'questions': [{'choices': [], 'questionContent': u'Question 1 ', 'typeOfQ': None}]

Choices作为空数组返回的第二个数据网格。有没有更好的问题,里面有 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

4

0 回答 0