ジャンゴ:別のモデルに基づいてオブジェクトを除外

ケビンRenskers:

私はモデルを持っています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))

これは明らかにそのように仕事をしませんが、私はそれが仕事をするようにそれを記述する方法を確認していません。

ウィレム・ヴァン・当社:

あなたは除外することができますCommentから、Sをuserそこに存在するためBlockedUserして:blocked_byrequest.user

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

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=407021&siteId=1