如何将计算变量添加到wagtail StructBlock模板上下文中?

NarūnasK

我想custom根据中的其他块值计算一些变量,StructBlock然后将此custom变量添加到模板上下文中。本质上,我应该能够StructBlock像这样模板中使用此计算变量{{ value.custom }}

这是我的StructBlock

class BaseBlock(blocks.StructBlock):
    bool_fld = blocks.BooleanBlock(required=False, default=False)

    def get_context(self, *a, **kw):
        ctx = super().get_context(*a, **kw)
        ctx['custom'] = 1 if self.bool_fld else 0
        return ctx

错误:

“ BaseBlock”对象没有属性“ bool_fld”

有任何想法吗?

加斯曼

get_context块对象上方法将块值作为第一个参数接收-在的情况下StructBlock,这是类似dict的对象,其字段可以通过访问value['some_field']

class BaseBlock(blocks.StructBlock):
    bool_fld = blocks.BooleanBlock(required=False, default=False)

    def get_context(self, value, parent_context=None):
        ctx = super().get_context(value, parent_context=parent_context)
        ctx['custom'] = 1 if value['bool_fld'] else 0
        return ctx

另请参见http://docs.wagtail.io/en/v2.0/topics/streamfield.html#template-rendering上get_context示例

self.bool_fld在这里无法使用,因为Block实例本身并不保存值-它们只是充当不同数据表示形式之间的转换器。(如果您使用过类似的Django表单字段对象forms.CharField,则块非常相似;块对象和表单字段对象都知道如何渲染传递给它们的值作为表单字段,但它们不会保留这些值。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章