我有两个模型。
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)
但是我不确定确切的语法。
可以排除存在ArchivedFlag
的Post
对象,使用:
Post.objects.exclude(archived_flag__isnull=False)
或者使用一个简单的过滤器更容易:
Post.objects.filter(archived_flag=None)
注意:通常最好使用
settings.AUTH_USER_MODEL
[Django-doc]引用用户模型,而不是使用User
直接建模[Django-doc]。有关更多信息,您可以查看引用User
模型部分的文档。