python - 以编程方式将表单字段添加到 Wagtail Form
问题描述
我有一个子类的模型AbstractEmailForm
..
我可以创建一个新实例:
new_page = LanderPage(body='body text here', title='Test sub page',
slug='testsub', to_address='j@site.com',from_address='j@site.com', subject='new inquiry')
这可行,但它会生成一个没有字段的表单。我不确定如何使用此结构创建表单字段,例如名称和电子邮件地址的表单字段。
有人可以指出我正确的方向吗?
作为参考,这是正在创建的页面:
class LanderPageFormField(AbstractFormField):
page = ParentalKey('LanderPage', related_name='form_fields')
class LanderPage(AbstractEmailForm):
body = RichTextField(blank=True)
thank_you_text = RichTextField(blank=True)
content_panels = AbstractEmailForm.content_panels + [
FieldPanel('body', classname="full"),
InlinePanel('form_fields', label="Form fields"),
FieldPanel('thank_you_text', classname="full"),
MultiFieldPanel([
FieldRowPanel([
FieldPanel('from_address', classname="col6"),
FieldPanel('to_address', classname="col6"),
]),
FieldPanel('subject'),
], "Email"),
]
解决方案
表单字段可以通过关系访问new_page.form_fields
- 检查Wagtail 源中 AbstractFormField 的定义以获取要提供的字段。例如:
new_page.form_fields = [
LanderPageFormField(label="Name", field_type="singleline", required=True),
LanderPageFormField(label="Email", field_type="email", required=True),
]
(由于关系被定义为ParentalKey,因此可以在 save 之前将它们附加到对象new_page
,这对于标准的 Django ForeignKey 是不可能的。)
推荐阅读
- c# - 自定义位图对象在 PictureBox 中未正确显示
- excel - VBA - 代码上的参数不是可选错误
- embedded - 如何修复配置错误的 SWD 引脚?
- c++ - 根据多个条件处理地图中的所有元素
- reactjs - Toastify Reactjs 添加链接
- java - Java Double.valueOf
- r - 修复函数错误:“pairlist”对象不能被强制输入“double”
- mongodb - 如何在 Mongoose collection.find 查询中使用列投影?记录的方法不起作用
- json - 在 Azure Logic App 中,如何从某些结果中包含的日期中删除 T 时间部分
- java - 如何接受用户输入并将其放入 while 条件