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

如何打印Django model过滤查询得到的完整记录内容

Django打印QuerySet完整记录的解决方法

你当前看到的是Django模型实例的默认输出格式,默认只显示模型类名和主键值,想要看到完整字段内容可以参考以下方案:

方案1:自定义模型__str__方法(推荐,全局生效)

在StudentInfo模型的定义代码中新增__str__方法,自定义实例的展示规则,修改后所有打印该模型实例的场景都会生效:

class StudentInfo(models.Model):
    # 原有字段定义保持不变
    Name = models.CharField(max_length=100)
    School = models.CharField(max_length=100)
    City = models.CharField(max_length=100)
    Country = models.CharField(max_length=100)

    # 新增__str__方法
    def __str__(self):
        return f"姓名:{self.Name} | 学校:{self.School} | 城市:{self.City} | 国家:{self.Country}"

修改后再执行print(record)就会按照你定义的格式显示每条记录的内容。

方案2:用values()方法返回字段字典(临时调试用)

如果不想修改模型代码,仅临时需要打印完整字段,可以在查询时调用values()方法,直接将每个实例转换为「字段名-字段值」格式的字典:

record = StudentInfo.objects.filter(
    Name=name, 
    School=school, 
    City=city, 
    Country=country
).values()
# 转为列表后打印即可看到所有字段内容
print(list(record))

如果只需要打印指定字段,可以给values传参,比如.values('Name', 'City')就只会返回这两个字段的内容。

方案3:遍历实例读取所有属性

如果已经拿到了QuerySet对象,也可以遍历每个实例,通过__dict__属性获取所有字段值:

for student in record:
    # 过滤掉Django内部使用的_state字段
    student_info = {k:v for k,v in student.__dict__.items() if k != '_state'}
    print(student_info)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 15:54:06