Django 1.11。我有一个模型Article
和另一个模型ReadArticles
。
class Article(models.Model):
name = models.CharField()
length = models.IntegerField()
class ReadArticle(models.Model):
user = models.ForeignKey(User)
article = models.ForeignKey(Article)
我想获取所有尚未阅读的文章的列表。我已经在使用Q
:
length_filter = Q(length__lt=5000)
unread_articles = Article.objects.filter(length_filter).all()
如何扩展此范围以排除ID /用户组合在read_articles
表中的所有文章?
答案 0 :(得分:2)
由于您尚未声明客户related
的姓名,因此只需.exclude
:
Article.objects.filter(length__lt=5000).exclude(readarticle__user=request.user)
答案 1 :(得分:1)
尝试以下查询,将用户对象替换为<USER TO FILTER FOR>
:
Article.objects.exclude(id__in=[ra.article.id for ra in ReadArticle.objects.filter(user=<USER TO FILTER FOR>)])
答案 2 :(得分:0)
您可以排除Article
引用了当前用户的ReadArticle
个对象。
Article.objects.filter(
length__lt=5000,
).exclude(
readarticle__user=current_user,
)