gpt4 book ai didi

python - 仅当之前未插入分隔符时才插入分隔符

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:06 25 4
gpt4 key购买 nike

我有一个模板变量product_list ,这是 QuerySetProduct物体; Product反过来,对象具有一对多字段 Track对象(当然,从 Track 反向映射),它可能为空。我想创建一个 Track 的列表s,按 Product 分组就像这样:

{% for product in product_list %}
{% if this is not the first product with tracks %}
<li class="separator"></li>
{% endif %}

{% for track in product.tracks %}
<li>{{track}}</li>
{% endfor %}
{% endfor %}

问题是,if this is not the first product with tracks我应该写什么? ?我试过ifchanged product但即使在第一次迭代时它也会插入分隔符(因为它从 "" 更改为 "someproduct" )。 forloop.counter在这里也不可用,因为前两个产品可能没有轨道。

一种解决方法可能是更改 product_listtrack_list像这样:

track_list = Track.objects.order_by('product__name')

所以我确实可以使用ifchanged 。对于我来说这是可行的,但我仍然对第一种方法的解决方案感兴趣。

最佳答案

您应该编写条件。看起来很简单,也许这不是你所要求的。

{% for product in product_list %}
{% if not forloop.first and product.tracks %}
<li class="separator"></li>
{% endif %}

{% for track in product.tracks %}
<li>{{track}}</li>
{% endfor %}
{% endfor %}

如果这不适合您,我建议您在 View 上处理数据并将准备好的数据发送到模板,这样更简单。

{% for product in product_list %}
{% if product.should_have_separator %}
<li class="separator"></li>
{% endif %}

{% for track in product.tracks %}
<li>{{track}}</li>
{% endfor %}
{% endfor %}

在您看来,将 should_have_separator 字段动态附加到产品应该有它:

product_list = Product.objects.....
is_the_first_product = True
for product in product_list:
is_the_first_product_with_tracks = ( is_the_first_product
and bool( product.tracks ) )
product.should_have_separator = not is_the_first_product_with_tracks
is_the_first_product = False

关于python - 仅当之前未插入分隔符时才插入分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com