Django:在检查ManyToMany字段时排除对象

时间:2019-03-05 07:15:59

标签: django

我确定有人已经问过类似的问题,但是我不知道该怎么做才能达到我想要的目标。如果标题更好,请修改标题。

我想做的就是这样

class Game(models.Model):
    created_by = models.ForeignKey(User, on_delete=models>CASCADE)


class User(AbstractUser):
    block_users = models.ManyToManyField("self", blank=True)

我想列出Game个对象,但是想排除self.request.user是否在父母的(created_by)ManyToManyField block_users

我试图这样做,但是没有用。

def get_queryset(self):
    return Game.objects.exclude(created_by__block_users=self.request.user)

1 个答案:

答案 0 :(得分:1)

我们可以从已登录用户的角度进行尝试,而不是根据用户创建的内容进行尝试。

def get_queryset(self):
    return Game.objects.exclude(created_by__in=self.request.user.blocked_users.all())