我对django queryset有一些问题,我无法自行解决。 我想过滤掉用户不应该看到的任务。问题是用户组和类别都是ManyToManyField,我不知道如何比较它们。
我的模特:
from django.contrib.auth.models import Group
class Task(models.Model):
# ...
categories = models.ManyToManyField(Category, blank=True)
# ...
class Category(models.Model):
# ...
organizers_group = models.ForeignKey(Group, null=True)
# ...
如果任务只能在一个类别中,我会写一些类似的内容:
def get_queryset(self, request):
return queryset = super(TaskAdmin, self).get_queryset(request).filter(
categories__in=request.user.groups
)
但是我不知道在使用ManyToManyFields时该怎么做。有什么帮助吗?
答案 0 :(得分:1)
更改您的查询集,如:
def get_queryset(self, request):
user_grps = request.user.groups.all()
cat_lst = Category.objects.filter(organizers_group__in=user_grps)
return queryset = super(TaskAdmin, self).get_queryset(request).filter(
categories__in=cat_lst
)