如何在表单的 __init__ 函数中绑定字段

2024-04-18

class Example_Form(Form):
    field_1 = TextAreaField()
    field_2 = TextAreaField()

    def __init__(self, type, **kwargs):
        super(Example_Form, self).__init__(**kwargs)

        if type == 'type_1':
           self.field_3 = TextAreaField()

在某些情况下,我需要动态地将字段添加到表单中。添加到示例表单的 field_3 结果是一个 UnboundField。我尝试将 field_3 绑定到表单中__init__功能,但不会起作用。

field_3 = TextAreaField()
field_3.bind(self, 'field_3')

如何将 field_3 绑定到示例表单?


Use self.meta.bind_field创建一个绑定字段,并将其分配给实例和_fields dict.

self.field_3 = self._fields['field_3'] = self.meta.bind_field(
    self, TextAreaField(),
    {'name': 'field_3', 'prefix': self._prefix}
)

在大多数情况下,使用子类并在创建表单实例时决定使用哪个类会更清楚。

class F1(Form):
    x = StringField()

class F2(F1):
    y = StringField()

form = F1() if type == 1 else F2()

如果您需要更加动态,您可以对表单进行子类化并为其分配字段。与实例不同,将字段分配给类可以直接进行。

class F3(F1):
    pass

if type == 3:
    F3.z = StringField()

form = F3()

您还可以定义所有字段,然后选择在验证表单之前删除一些字段。

class F(Form):
    x = StringField()
    y = StringField()

form = F()

if type == 1:
    del form.y
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在表单的 __init__ 函数中绑定字段 的相关文章

随机推荐

  • 如何在 Excel 中根据验证结果进行条件格式设置?

    如果单元格无效 我想更改单元格的格式 在这种情况下 有效 意味着单元格未通过数据验证规则 我问这个问题是因为我在SO上找不到答案 我最终解决了它 我将发布我的答案 看看人们是否愿意发表评论或提供更好的答案 这是一个基本大纲 我想在本周晚些时
  • 局部变量和全局变量默认是如何初始化的?

    根据以下内容 我对吗 global A 引用被初始化为 null global int 为 0 local A 引用为空 local int 未初始化 global A x 和 local A x 均未初始化 谢谢你的帮助 A global
  • 如何在 IDE 中使用 Grails 依赖项

    So I finally https stackoverflow com questions 1867064 grails and local maven dependencies让我的依赖项与 Grails 一起工作 现在 我的 IDE
  • 如何创建行列总和为 1 和 0 的对称矩阵

    我试图找到一种优雅的算法来创建 1 和 0 的 N x N 矩阵 但有以下限制 每行每列之和必须为Q 可自由选择 对角线必须是 0 矩阵必须是对称的 矩阵不一定是随机的 然而 随机和非随机解都很有趣 因此对于 Q 偶数 只需使每一行成为向量
  • Spring验证字符串值是JSON

    我的配置文件中有一些值 它应该是 JSON 它将作为字符串加载 我希望 Spring 在注入之前验证该值确实是有效的 JSON 否则会抛出错误 我已经阅读了现有的验证注释 例如 NotNull Size Min Max Email NotE
  • 使用 Read::read_to_string 从 TcpStream 读取会挂起,直到远程端关闭连接

    我正在尝试实施Haskell IRC 机器人教程 https wiki haskell org Roll your own IRC bot在 Rust 中 我在阅读连接后服务器发送给我的内容时遇到一些困难 似乎发生的情况是 我连接并从服务器
  • C 中正确的 Hello World [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 正确的 C 语言 Hello World 程序是什么 从第一页开始 c 你好世界 的 Google 搜索结果 http www google c
  • 离线时如何将数据写入firebase?斯威夫特3

    在 tableView 中我有一个工作列表 这些作业可以由多个用户访问 因此我需要使用 FIRTransaction 根据第一次写入 FirebaseDatabase 的结果 我需要写入 不写入 Firebase 中的另一个路径 架构如下
  • Firebase 通知主题的限制

    我想为我的 Android 应用程序使用 Firebase 通知 我想知道主题数量是否有限制 或者可以订阅某个主题的用户数量 例如 我可以有 10000 个主题 每个主题有 100 万用户吗 主题或订阅的数量没有限制 主题最初推出后第一年的
  • 自己的图像作为范围内的滑块拇指。如何在CSS上设置样式

    如何使用 css 将图像设置为范围输入类型上的拇指滑块 它在 Internet Explorer 中不起作用 Chrome 和 Firefox 没问题 但在 IE 上我的图像被隐藏了还是怎么的 我用 ms thumb 并尝试将图像设置为背景
  • 使用 TEXT 或 VARCHAR 哪种 DATATYPE 更好?

    这个问题基于两件事表现 and size 使用 TEXT 或 VARCHAR 哪种 DATATYPE 更好 基于哪些性能会影响哪些性能会得到改善 这取决于你用它做什么 我不想给出如此笼统的答案 但这是事实 一般来说 尝试尽可能具体地获取数据
  • 调试时会忽略依赖项 org.apache.httpcomponents:httpclient:4.5,因为它可能与提供的内部版本冲突

    我试图将图像上传到服务器 由于我是 Android 新手 我正在尝试使用其他代码 这是我的错误 错误文件 https i stack imgur com rZnw6 jpg 这是我的活动文件 import android app Activ
  • Excel、ActiveCell.Row 取决于单击与按 Enter 键

    我的工作表中有 VBA 代码 它是工作表更改事件 Private Sub Worksheet Change 在此工作表上 我有带有数据验证的下拉菜单 所以我可以选择一个下拉菜单并选择 水果 做出选择后 工作表更改事件会记录我当前所在的行 并
  • Flex - 将滚动条的位置更改为 Horizo​​ntalList 组件的顶部

    默认情况下 Horizo ntalList 组件的水平滚动条位于底部 有没有办法重新定位它 使其位于顶部 为了清楚起见 我并不是指使用scrollToIndex或horizo ntalScrollPosition或类似的方法移动滚动位置 而
  • 在 Flex 中将字符串模式解析为日期

    flex 中是否有某种方法可以解析迄今为止的字符串 我希望它支持类似于 dateformatter 的自定义格式 使用 dateformatter 类 我们可以解析 formatString property 指定的各种字符串格式的日期对象
  • 您可以在 64 位 Windows 7 上使用 Mercurial “推送”到网络共享吗?

    我们正在从 Windows XP x86 升级到 Windows 7 x64 我正在测试当前工作流程的兼容性问题 目前 我们将中央 Mercurial 存储库存储在网络共享上 将副本克隆到我们的工作站 并将更改推送回基于网络的存储库 这在
  • 相当于 php call_user_func 的 javascript

    我发现了我已经实现的这个主题 参见已接受的答案 相当于 PHP 的 call user func 的 JavaScript https stackoverflow com questions 5818313 javascript equiv
  • 没有人拥有者(99 99)在FTP中由php功能引起?

    我有一个脚本 Joomla 可以在服务器上创建文件和目录 问题是它在所有者 99 99 无人 下创建它们 并且在没有服务器管理员帮助的情况下我无法通过 FTP 删除或修改它们 我认为那是move uploaded filephp 的函数 W
  • 加入剪贴板链最佳实践

    进一步到我的post https stackoverflow com q 8695081 744588在自定义格式剪贴板上 我正在考虑编写自己的自定义剪贴板监视组件的可能性 声明之前 ClipboardWindow SetClipboard
  • 如何在表单的 __init__ 函数中绑定字段

    class Example Form Form field 1 TextAreaField field 2 TextAreaField def init self type kwargs super Example Form self in