【问题标题】:Django: exclude some objectsDjango:排除一些对象
【发布时间】:2026-01-26 05:05:01
【问题描述】:

我想从 User 模型中排除一些用户,他们存在于 friendsi_requestedrequested_me 中。

models.py:

class Relation(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    friends = models.ManyToManyField(User, related_name='my_friends', blank=True)
    i_requested = models.ManyToManyField(User, related_name='i_requested', blank=True)
    requested_me = models.ManyToManyField(User, related_name='requested_me', blank=True)

views.py:

def allUser(request):
    me = request.user
    f = Relation.objects.get(user=me)
    ff = f.friends.all()

    users = User.objects.all()
    exclude = users.exclude(id__in=ff)

    print(exclude)
    print(ff)

    serializer = SimpleUserSerializer(user, many=True)
    return Response(serializer.data)

当我运行这段代码时,它会打印:

, , ]>

]>

为什么不排除 test5

【问题讨论】:

    标签: python django


    【解决方案1】:

    这里f.friends.all()返回对象列表。

    exclude = users.exclude(id__in=ff) 中,您将 id 与对象列表进行比较。

    试试exclude = users.exclude(id__in=ff.values_list('id', flat=True))

    如果有帮助,请点赞。

    【讨论】: