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

如何在Django模板中将QuerySet转换为列表并格式化显示?

解决Django模板中QuerySet显示格式问题

方法1:用内置join过滤器快速实现

你的Building模型已经在__str__方法中返回了Building_code,直接用Django的join过滤器就能把QuerySet里的元素拼接成指定格式:

修改模板代码如下:

{% with allbuilding=hira.Building.all %}
    <td>{{ allbuilding|join:", " }}</td>
{% endwith %}

这个过滤器会自动调用每个Building对象的__str__方法,把返回的编码用, 连接,最终显示成13, 14这样的无标识格式。

方法2:在模型中定义属性实现灵活格式

如果后续需要用BuildingFullName(比如13 | 办公楼, 14 | 仓库)这类格式,可以在Hira模型中添加一个自定义属性:

class Hira(models.Model):
    # 你的其他字段...
    Building = models.ManyToManyField(Building)

    @property
    def building_list(self):
        # 用Building_code拼接
        return ", ".join([b.Building_code for b in self.Building.all()])
        # 如果要用全名,替换成下面这行:
        # return ", ".join([b.BuildingFullName for b in self.Building.all()])

然后在模板里直接调用这个属性:

<td>{{ hira.building_list }}</td>

方法3:模板循环手动控制拼接

如果需要更精细的格式控制(比如避免最后一个元素后加逗号),可以用模板循环实现:

<td>
    {% for building in hira.Building.all %}
        {{ building.Building_code }}{% if not forloop.last %}, {% endif %}
    {% endfor %}
</td>

这种方式适合需要自定义分隔符或添加额外样式的场景。

内容的提问来源于stack exchange,提问作者Arklines

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:32:39