django 'dict' object has no attribute get_absolute_url or other attribute

摘要: 今天在给新写的BLOG增加 sitemap.xml, 在其中会用到查询 文章的编号和时间字段。因为如果直接用 Entity.object.all() 的话,性能很差,没必要在读取站点map的时候,也把内容读出来,我只需要ID,时间,以及拼凑出来的URL而已

今天在给新写的BLOG增加 sitemap.xml, 在其中会用到查询 文章的编号和时间字段。因为如果直接用 Entity.object.all() 的话,性能很差,没必要在读取站点map的时候,也把内容读出来,我只需要ID,时间,以及拼凑出来的URL而已。

首先的第一个想法,既然只要部分字段,那么直接用values() 不就行了吗:

Entity.objects.filter(ischeck = 1).values('id','date')

按正常的逻辑来说,这是对的,SQL 语句只会去select id, date 字段,不会全表扫描。但结果呢,报错了:django 'dict' object has no attribute get_absolute_url , 因为values 之后,返回的是一个dict, 并不是一个object对象,所以在model中定义的get_absolute_url 方法根本找不到。怎么办。

在django中,还提供了一个方法, only:

Entity.objects.filter(ischeck = 1).only('id','date')

按照这么做,就不会报错了。


参考资料:https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.only

上一篇: java航空订票系统
下一篇: 一篇文章入门 centos/redhat下 jenkins 实现自动化部署
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号