Django如何过滤不存在对应ArchivedFlag外键关联的Post查询集?
实现方案
你可以直接通过Django ORM的反向关联空值判断实现需求,你在ArchivedFlag模型中为post外键设置的反向关联名为archived_flag,直接基于该字段做isnull判断即可:
# 仅保留没有关联ArchivedFlag记录的Post plist = plist.filter(archived_flag__isnull=True)
补充说明
- 上述写法的逻辑是筛选出反向关联
archived_flag为空的Post对象,正好符合你要排除被标记归档帖子的要求。 - 也可以用
exclude写法实现完全等价的效果:
plist = plist.exclude(archived_flag__isnull=False)
- 如果后续需要实现「排除被当前登录用户归档的帖子」的需求,只需增加用户过滤条件即可:
from django.contrib.auth.decorators import login_required @login_required def your_view(request): # 其他逻辑得到plist plist = plist.exclude(archived_flag__user=request.user) # 后续逻辑
内容的提问来源于stack exchange,提问作者user16541120
相关产品推荐
相关产品推荐

