Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “如何筛选”;而不是在;在Django查询中使用Q?_Python_Sql_Django - Fatal编程技术网

Python “如何筛选”;而不是在;在Django查询中使用Q?

Python “如何筛选”;而不是在;在Django查询中使用Q?,python,sql,django,Python,Sql,Django,我在Django项目上工作,它基本上是一种定制文章系统。所以我们有一些文章是按圈和区域划分的。例如,我有区域1,区域2和区域3。类似地,我有圆圈1,圆圈2和圆圈3。我有属于一个区域和一个圆的用户。假设我的用户User1属于Region1和Circle2 我有为区域1和圈1贴的第1条,为区域1和圈2贴的第2条,为区域2和圈2贴的第3条 我需要按以下方式为该用户筛选文章 给我一些属于我的圈子而不是我所在地区的文章,给我一些同时属于我的圈子和地区的文章。 到目前为止,我所做的是 Article.obj

我在Django项目上工作,它基本上是一种定制文章系统。所以我们有一些文章是按圈和区域划分的。例如,我有区域1,区域2和区域3。类似地,我有圆圈1,圆圈2和圆圈3。我有属于一个区域和一个圆的用户。假设我的用户User1属于Region1和Circle2

我有为区域1和圈1贴的第1条,为区域1和圈2贴的第2条,为区域2和圈2贴的第3条

我需要按以下方式为该用户筛选文章

给我一些属于我的圈子而不是我所在地区的文章,给我一些同时属于我的圈子和地区的文章。

到目前为止,我所做的是

Article.object.filter(is_archived=False).filter(
                    Q(belongs_to_circle=self.cid) & Q(belongs_to_region=self.rid) |
                    Q(belongs_to_circle=self.cid) & ~Q(belongs_to_region=self.rid)
                )
如果我使用查询来获取同时属于circle和region的文章,它可以正常工作,但我正在尝试获取属于我的circle但不属于我的region的文章

所以,若这篇文章是为Region1和Circle2发布的,我应该会得到它。若文章是针对Region2和Circle2发布的,我应该得到它,但若文章是针对Region1和Circle1发布的,我就不应该得到它。有人能帮我正确地得到这个查询吗

self.cid
self.rid
也是模型对象,因为我有区域和圆模型,它们是文章的外键

谢谢。

您可以使用
.exclude()
进行此操作

Article.object.filter(is_archived=False,belongs_to_circle=self.cid).exclude(belongs_to_region=self.rid)

Article.object.filter(is\u archived=False,besides\u circle=self.cid)。exclude(besides\u region=self.rid)
会更好,我想感谢@Astik的帮助,但我的想法是错误的。只是改变了过滤过程。我们将只查询它属于哪两个@AstikAnand,你的答案有点正确,但不是在我提到的场景中。但我肯定会放弃投票。