1

我想知道是否有人可以帮助我。我正在一个新项目中探索变形和滤锅,并遵循有关子类化 SchemaNode 的文档。然而,虽然文件指出

子类可以定义以下方法和属性:preparer、validator、default、missing、name、title、description、widget和after_bind。

当我定义标题时,它似乎没有通过。这是我正在使用的一些示例代码:

class LocationSchemaNode(colander.SchemaNode):
    schema_type = colander.Int
    title = 'Location'
    missing = None
    validator = colander.Range(
       min=1,
       min_err='Please select a valid location'
    )

class PersonSchema(colander.Schema):

    location_id = LocationSchemaNode()

但是,根据 SchemaNode 中定义的标题,当呈现表单时,该字段的标签是“Location Id”而不是“Location”。相反,如果我写:

class PersonSchema(colander.Schema):

    location_id = LocationSchemaNode(title="Location")

然后一切都如我所愿,但文档似乎表明我不需要这样做,如果我这样做,如果我必须继续定义字段,那么预定义 SchemaNode 的点就会失败。

我是否遗漏了某些东西,或者正在做不应该做的事情(我怀疑情况会如此)。任何帮助深表感谢。

基思

4

1 回答 1

0

这似乎是一个已修复的错误: https ://github.com/Pylons/colander/pull/183

此外,该补丁似乎位于最新可用的漏勺版本中,因此更新到最新版本应该可以解决此问题。

更正:

该 PR 中给出的示例与这个问题完全匹配,但给出的修复实际上并没有解决那个确切的问题!因此,我提交了另一个PR 来解决该问题,并使用 #183 中给出的示例作为测试。如果您等不及将修复程序引入到存储库或下一个版本中,您可以手动修补您自己的副本。

于 2015-07-03T18:30:06.307 回答