我正在研究Django项目,基本上它是一种自定义文章系统。所以我们有文章分为Circle和Region。例如,我有Region1,Region2和Region3区域。同样,我有Circle1,Circle2和Circle3圆圈。我有属于一个区域和一个圆圈的用户。所以我要说我的用户,User1属于Region1和Circle2。
我为Region1和Circle1发布了Article1,为Region1和Circle2发布了Article2,Article3发布了Region2和Circle2。
我需要按以下方式为此用户过滤文章。
Get me article(s) that belongs to my circle and not to my region, get me article(s) that belongs my circle and region both.
到目前为止,我所做的是,
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)
)
如果我使用查询来获取属于圆圈和区域的文章,它可以正常工作,但我正在尝试获取属于我的圈子但不属于我所在地区的文章。
因此,如果发布了Region1和Circle2的文章,我应该得到它。如果为Region2和Circle2发布了文章,我应该得到它,但是如果为Region1和Circle1发布了一篇文章我不应该得到它。任何人都可以帮我正确地获得此查询吗?
self.cid
和self.rid
也是模型对象,因为我有Region和Circle模型,而且是Article的外键。
感谢。
答案 0 :(得分:1)
您可以使用.exclude()
。
Article.object.filter(is_archived=False,belongs_to_circle=self.cid).exclude(belongs_to_region=self.rid)