Django:排除基于其他模型的对象

问题描述 投票:1回答:1

我有模型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)

而且我还有一个模型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))

显然不是那样工作的,但是我不确定如何编写它才能工作。

python django django-orm
1个回答
0
投票

您可以从Commentuser存在BlockedUserblocked_by中排除request.user

© www.soinside.com 2019 - 2024. All rights reserved.