如果您希望Django提取所有
User对象以及
Foo与用户对象相关的所有对象,则可以使用
select_related():
User.objects.all().select_related('foo')但在这里,你不希望 所有
的
Foo那些与用户对象的对象,你只是希望他们的满足您的标准的子集。我不知道一种告诉Django在单个查询集中执行此操作的方法。但是您 可以
做的是分别进行两个选择并在Python中进行联接:
# Map from user id to corresponding Foo satisfying <criteria>, if any.foos = {foo.user_id: foo for foo in Foo.objects.filter(user__isnull = False, <criteria>)}for user in User.objects.all(): foo = foos.get(user.id) # ...(这不会比您做更多的数据库工作或传输更多的数据
LEFT OUTER JOIN,因此我认为这是一种合理的方法。)



