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

Django shell执行Post.objects.all()无法打印可读对象内容

问题原因

Post模型未自定义__str__()方法(Python 2环境下为__unicode__()方法)时,Django会调用默认的对象字符串生成逻辑,统一返回<模型名 object (主键ID)>格式的结果,不会自动展示title这类业务字段的可读内容,因此查询结果无法直接识别具体对象。

解决方法
  • 打开blog应用下的models.py文件,定位到Post模型类
  • 在Post类内部新增__str__方法,自定义对象的可读返回值,参考代码如下:
class Post(models.Model):
    # 原有author、title、text等字段定义全部保留,无需修改

    def __str__(self):
        # 可根据需求自定义返回内容,常规做法是返回文章标题
        return self.title

提示:__str__是Python类的内置字符串表示方法,添加该方法不会修改数据库表结构,无需执行迁移命令。

  • 退出当前运行的Django shell,重新执行python manage.py shell启动环境,重新导入模型执行查询,即可看到可读的对象标识,例如返回结果会变为<QuerySet [<Post: Sample title>]>。

内容的提问来源于stack exchange,提问作者Tsung-Li Wang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:27:25