排除django中的两种类型的用户

时间:2015-03-24 07:52:12

标签: python django

我在django中有一个应用程序,并希望在我的视图中排除匿名用户和管理员用户(拥有标记超级用户的用户)。

我已经拥有不包含匿名用户的代码,但是如何将管理员用户放在这里?

我的模特

class MyModel(models.Model):
    user = models.ForeignKey(User, blank=True, null=True)
    name = models.CharField(max_length=255, blank=True, null=True)

这是我的问题:

def get_queryset(self):
    return User.objects.all().exclude(id=settings.ANONYMOUS_USER_ID)

4 个答案:

答案 0 :(得分:3)

只需按is_superuser字段添加排除:

User.objects.all().exclude(id=settings.ANONYMOUS_USER_ID) \
                  .exclude(is_superuser=True)

答案 1 :(得分:0)

您也可以使用Q

尝试此操作
from django.db.models import Q
User.objects.exclude(Q(id=settings.ANONYMOUS_USER_ID) | Q(is_superuser=True))

答案 2 :(得分:0)

所有管理员都具有属性is_staff=True

User.objects.all().exclude(id=settings.ANONYMOUS_USER_ID).exclude(is_staff=True)

答案 3 :(得分:0)

User.objects.all().exclude(id=) 

...,您可以指定 希望其具有访问权限的人。