使用django

时间:2015-10-22 18:08:25

标签: django django-models django-queryset django-orm

我对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时该怎么做。有什么帮助吗?

1 个答案:

答案 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
    )