我想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] 删除。
我来说两句