Python 来自StreamField Wagtail的组块
我想要实现的目标将更容易在列表中解释。 e、 g 我想对StreamField中的块进行分组,并将它们显示在按这些行分组的模板中。 在我的模型中有这样做的方法吗?或者我应该在模板中以某种方式完成它。。 我试着做:Python 来自StreamField Wagtail的组块,python,django,wagtail,wagtail-streamfield,Python,Django,Wagtail,Wagtail Streamfield,我想要实现的目标将更容易在列表中解释。 e、 g 我想对StreamField中的块进行分组,并将它们显示在按这些行分组的模板中。 在我的模型中有这样做的方法吗?或者我应该在模板中以某种方式完成它。。 我试着做: 在StreamField上按列表操作 解阻塞流场。。然后按列表操作 StreamField的值是一个类似列表的对象,类型为StreamValue。由于它不是一个真正的列表,它可能不支持切片-如果不支持,您可以通过使用list(self.body)(其中body是您的StreamFie
- 在StreamField上按列表操作
- 解阻塞流场。。然后按列表操作
- StreamField的值是一个类似列表的对象,类型为
StreamValue
。由于它不是一个真正的列表,它可能不支持切片-如果不支持,您可以通过使用list(self.body)
(其中body
是您的StreamField)将其转换为一个真正的列表来解决这个问题。执行此操作的一个好地方是页面的get\u context
方法:
def get_context(self, request):
context = super().get_context(request)
list_of_blocks = list(self.body)
block_first_row = list_of_blocks[:3]
block_rest_rows = [list_of_blocks[i:i+4] for i in range(3, len(list_of_blocks), 4)]
block_rows = block_rest_rows.insert(0, block_first_row)
context['block_rows'] = block_rows
return context
然后,您可以访问模板中的block\u行
:
{% for block_row in block_rows %}
<div class="row">
{% for block in block_row %}
render block as normal, with {% include_block block %} or otherwise
{% endfor %}
</div>
{% endfor %}
{block_rows%}
{块中的块的%u行%}
使用{%include_block%}或其他方式以正常方式渲染块
{%endfor%}
{%endfor%}
StreamField的值是一个类似列表的对象,类型为StreamValue
。由于它不是一个真正的列表,它可能不支持切片-如果不支持,您可以通过使用list(self.body)
(其中body
是您的StreamField)将其转换为一个真正的列表来解决这个问题。执行此操作的一个好地方是页面的get\u context
方法:
def get_context(self, request):
context = super().get_context(request)
list_of_blocks = list(self.body)
block_first_row = list_of_blocks[:3]
block_rest_rows = [list_of_blocks[i:i+4] for i in range(3, len(list_of_blocks), 4)]
block_rows = block_rest_rows.insert(0, block_first_row)
context['block_rows'] = block_rows
return context
然后,您可以访问模板中的block\u行
:
{% for block_row in block_rows %}
<div class="row">
{% for block in block_row %}
render block as normal, with {% include_block block %} or otherwise
{% endfor %}
</div>
{% endfor %}
{block_rows%}
{块中的块的%u行%}
使用{%include_block%}或其他方式以正常方式渲染块
{%endfor%}
{%endfor%}