简体   繁体   English

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

[英]Excluding the two types of users in django

I have an application in django and wants in my view exclude anonymous users and users who are admins (those who have a flag superuser). 我在django中有一个应用程序,并希望在我的视图中排除匿名用户和管理员用户(拥有标记超级用户的用户)。

I already have code that excludes anonymous users, but how else to put here users who are admins? 我已经有了排除匿名用户的代码,但是如何将管理员用户放在这里呢?

My model 我的模特

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

Here is my query: 这是我的查询:

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

Just add the exclude by is_superuser field: 只需添加is_superuser字段的排除:

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

You can try this also using Q 您也可以尝试使用Q

from django.db.models import Q
User.objects.exclude(Q(id=settings.ANONYMOUS_USER_ID) | Q(is_superuser=True))

所有管理员都有一个attribut is_staff=True

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

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

...并且您可以指定您希望它有权访问的人。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM