如何在Django Admin中过滤查询集以仅显示一个条目?

时间:2011-07-25 19:38:50

标签: django django-models django-admin

我在MessageAdmin中有这样的功能:

def queryset(self, request):
    user_profile = UserProfile.objects.get(user = request.user.id)
    return Message.objects.all().filter(groups__in = [group_obj.id for group_obj in user_profile.group.all()])

我想返回与User具有相同组的所有邮件。但是使用这种结构,如果User有多个组,所有消息都会返回两次 - 所以当我尝试打开任何消息时,我都会收到错误。

编辑:UserProfile是User模型的扩展,我用ManyToManyField存储所有组。

1 个答案:

答案 0 :(得分:1)

我认为你需要:

Message.objects.filter(groups__in = [group_obj.id for group_obj in \
    user_profile.group.all()]).distinct()