类项目(models.Model)补充定义: 用户= models.ManyToManyField(用户,通过= 'Project_User')LEFT OUTER JOIN在Django的
class Project_User(models.Model):
project = models.ForeignKey('Project')
user = models.ForeignKey(User)
property = models.BooleanField()
并不是所有的项目都有自己的Project_User行。
事情,我需要的是获取当前用户的字段“属性”!= true或当前用户的Project_User行不存在的所有项目的查询集。有没有办法使用django的ORM来做到这一点?因此,我需要Queryset对象来为其应用一些其他过滤器。
使用自定义SQL我可以做到这一点。当前用户是否有ID = = XXXX:
SELECT * FROM "app_project" LEFT OUTER JOIN "app_project_user"
ON ("app_project"."id" = "app_project_user"."project_id"
AND ("app_project_user"."user_id" = XXXX OR "app_project_user"."user_id" IS NULL))
WHERE ("app_project_user"."property" = false OR "app_project_user"."property" IS NULL);
我希望,这是可能的,但我不知道怎么回事,但..
感谢您的帮助!
这对我不好,因为ORM生成子查询。当我有几个bool字段时 - 一个字段的子查询不起作用。 – ramusus 2009-05-21 09:45:52