You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Wagtail StructBlock模板上下文添加计算变量?

给Wagtail StructBlock添加基于字段值的自定义上下文变量

嘿,我看到你在尝试给Wagtail的StructBlock添加自定义上下文变量,刚好这个问题我之前也碰到过!你当前的代码里有个关键小问题,我来帮你修正并解释清楚:

你之前用self.bool_fld是在访问Block类的字段定义,而不是当前这个Block实例实际提交的字段值。正确的做法是从get_context方法的value参数里获取当前块的真实数据。

这里是修正后的完整代码:

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

    def get_context(self, value, parent_context=None, **kwargs):
        # 先调用父类方法获取基础上下文
        ctx = super().get_context(value, parent_context=parent_context, **kwargs)
        
        # 从value中获取当前块的实际字段值,计算自定义变量
        # value是当前StructBlock的实例数据,包含所有字段的提交值/默认值
        ctx['custom'] = 1 if value.bool_fld else 0
        
        return ctx

关键说明:

  • get_context方法的第一个参数value就是当前StructBlock实例的真实数据,你可以通过value.字段名的方式获取任何字段的实际值(比如这里的value.bool_fld)
  • 把计算好的custom变量添加到上下文后,你就能在StructBlock的模板里通过{{ value.custom }}直接调用这个变量了
  • 如果需要更复杂的计算(比如依赖多个字段),只需要继续从value里获取对应的字段值就行,逻辑完全一样

内容的提问来源于stack exchange,提问作者NarūnasK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:15:29