我有一个模型Foo,它对User模型有一个ForeignKey.
之后,我需要获取所有用户的ID并将其放在列表中
foos = Foo.objects.filter(...) l = [ f.user.id for f in foos ]
但是当我这样做时,django从数据库中抓取整个User实例,而不是仅仅给出数字用户的id,它存在于每个Foo行中.
如何在不查询每个用户或使用select_related的情况下获取所有ID?
谢谢
使用queryset的values()函数,它将返回包含作为参数传递的每个属性的名称/值对的字典列表:
>>> Foo.objects.all().values('user__id') [{'user__id': 1}, {'user__id' 2}, {'user__id': 3}]
然后,ORM将能够优化SQL查询以仅返回所需的字段,而不是执行"SELECT*".