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
相关产品推荐
相关产品推荐

