如何在Django中仅获取表的特定列?

42 投票
3 回答
80176 浏览
提问于 2025-04-15 23:50

我发现像这样的查询:

user = User.objects.all() or User.objects.filter(username = username)

会把表格里的所有列都取出来,即使我们并不需要所有的列。有没有更好的方法来写数据库查询呢?如果有的话,为什么我们不常看到这样的代码呢?

3 个回答

6

如果你只需要把值作为字典来用,可以使用 objects.values('')。这样做也更快。

查看文档:http://docs.djangoproject.com/en/dev/ref/models/querysets/#values-fields

43

在django 1.8中:使用values_list

Entry.objects.values_list('id', 'headline')

https://docs.djangoproject.com/en/1.8/ref/models/querysets/

46

QuerySet.only()QuerySet.defer() 是用来优化数据库查询的工具。它们可以帮助你选择要从数据库中获取哪些字段,而把其他字段暂时放一边,直到你真正需要用到这些字段的时候再去获取。

撰写回答