【发布时间】:2013-03-25 18:43:06
【问题描述】:
我正在使用 Django 的内置用户模型,并且有一个自定义 Foo 对象,该对象带有一个外键到用户。我正在寻找适合某些约束的所有 User 对象和所有 Foo 对象,如下所示:
SELECT * from auth_user LEFT OUTER JOIN "foo" ON
(auth_user.id = foo.id AND <other criteria here>)
我应该如何在 Django 中完成这项工作?到目前为止,我已经尝试过:
User.objects.filter(foo__<criteria>)
但生成的 SQL 类似于:
SELECT * from auth_user LEFT OUTER JOIN "foo" ON
(auth_user.id = foo.id) WHERE <other criteria here>
并且仅返回具有符合条件的 Foo 对象的 User 对象。或者,我可以选择所有用户对象并为每个对象运行一个查询,但这会大大降低效率。
【问题讨论】:
-
其他标准是什么?这一切都还与
Foo模型有关吗? -
是的。 Foo 包含几个日期字段,我只从指定的日期范围内选择 Foos。
-
User.objects.filter(foo__<criteria>)应该做什么?foo不是User模型中的字段。我一直无法生成包含LEFT OUTER JOIN的查询。