我见过这样的查询:
user = User.objects.all() or User.objects.filter(username = username)
即使我们不需要所有列,也会获取表的所有列。我们有更好的方法来编写数据库查询吗?如果是,我们为什么不经常看到这个代码呢?
答案 0 :(得分:30)
QuerySet.only()
和QuerySet.defer()
可用于优化ORM将提取的字段,推迟其他字段,直到访问模型上的相应属性。
答案 1 :(得分:23)
使用django 1.8: 使用values_list
Entry.objects.values_list('id', 'headline')
答案 2 :(得分:6)
如果您只需要将值作为字典使用objects.values('')。它也更快。
请参阅文档:http://docs.djangoproject.com/en/dev/ref/models/querysets/#values-fields