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

Django中如何去除QuerySet渲染的模型标识并生成有序列表?

解决Django模板中Iscrizione对象显示问题并生成有序列表

看起来你现在遇到的问题是Django模板里直接打印查询集对象时,会显示模型类名加属性的默认字符串格式,而且需要把这些数据转成有序列表。我来给你分两步解决:

1. 优化视图层(可选但推荐)

你当前的视图代码里,appello的定义有点冗余,把查询集转成列表其实没必要——Django模板可以直接遍历查询集。我们先把视图代码简化得更清晰:

def appelli(request, corso_id):
    # 获取对应的课程对象
    corso = Corso.objects.get(pk=corso_id)
    # 直接获取该课程下的所有报名记录查询集
    iscrizioni = Iscrizione.objects.filter(corso1_id=corso)
    # 把查询集传给模板,变量名更直观
    return render(request, 'corsi/appello.html', {'iscrizioni': iscrizioni})

2. 模板层处理:生成有序列表并去掉Iscrizione标识

这里有两种实用方式,选一种适合你的:

方式一:修改模型的__str__方法(一劳永逸)

打开你的models.py,找到Iscrizione模型,修改它的__str__方法,让它返回你想要显示的内容(比如那个VFEW对应的字段,假设是codice字段):

class Iscrizione(models.Model):
    # 你的其他字段定义
    codice = models.CharField(max_length=10)  # 替换成你实际的字段
    corso1 = models.ForeignKey(Corso, on_delete=models.CASCADE)

    def __str__(self):
        # 返回你想在模板里显示的内容
        return self.codice

然后在模板里直接用有序列表标签遍历查询集:

<ol>
    {% for iscrizione in iscrizioni %}
        <li>{{ iscrizione }}</li>
    {% endfor %}
</ol>

方式二:直接在模板里访问对象的具体字段(无需改模型)

如果你不想修改模型的__str__方法,也可以在模板里直接指定要显示的字段:

<ol>
    {% for iscrizione in iscrizioni %}
        <li>{{ iscrizione.codice }}</li> <!-- 替换成你实际要显示的字段名 -->
    {% endfor %}
</ol>

如果不想修改视图(保留原变量)

如果你暂时不想改动视图代码,原来的appello.0是报名记录的列表,那模板里可以这么写:

<ol>
    {% for item in appello.0 %}
        <li>{{ item.codice }}</li> <!-- 替换成实际字段名,或改模型__str__后用{{ item }} -->
    {% endfor %}
</ol>

这样就能生成干净的有序列表,不会再出现<Iscrizione: ...>的标识啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:38:37