繁体   English   中英

Django:排除基于另一个 model 的对象

[英]Django: exclude objects based on another model

我有一个 model Comment

class Comment(models.Model):
    upload = models.ForeignKey(Upload, related_name='comments', on_delete=models.CASCADE)
    user = models.ForeignKey(get_user_model(), related_name='comments', on_delete=models.CASCADE)
    text = models.TextField(blank=False, null=False)
    date_created = models.DateTimeField(auto_now_add=True)

而且我还有一个 model BlockedUser

class BlockedUser(models.Model):
    blocked_by = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name="blocked_by")
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    date_created = models.DateTimeField(auto_now_add=True)

除了被你屏蔽的人写的评论外,我如何获取所有评论?

queryset = Comment.objects.all().select_related('user')
queryset = queryset.exclude(user__in=BlockedUser.objects.filter(blocked_by=self.request.user))

这显然不能那样工作,但我不知道如何编写它才能正常工作。

您可以从存在BlockedUseruser中排除Comment s, blocked_by request.user具有:

Comment.objects.exclude(user__blockeduser__blocked_by=request.user)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM