根据是否存在外键关系来过滤django查询集



我有两个模型。

class Post(models.Model): 
id = models.OidField('object id', unique=True)
class ArchivedFlag(models.Model):
post = models.ForeignKey(post,
on_delete=models.CASCADE,
related_name='archived_flag')
user = models.ForeignKey(User,
on_delete=models.CASCADE,
related_name='archives')

在views.py中,我根据一些标准生成了一个所有帖子的列表,'plist'。

我想过滤基于帖子的列表,不具有ArchivedFlag对象关系。ArchivedFlag模型基本上是一个隐藏某些帖子的工具。

我该怎么做?我想在

这一行做点什么
plist = plist.exclude(models.ForeignKey.Post exists) 

但是我不确定确切的语法。

可以排除存在ArchivedFlagPost对象,使用:

Post.objects.exclude(archived_flag__isnull=False)

或者使用一个简单的过滤器更容易:

Post.objects.filter(archived_flag=None)

注意:通常最好使用settings.AUTH_USER_MODEL[Django-doc]引用用户模型,而不是使用User直接建模[Django-doc]。有关更多信息,您可以查看引用User模型部分的文档。

最新更新