2015-03-24 4 views
0

У меня есть приложение в 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) 

ответ

2

Просто добавьте исключайте is_superuser поле:

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

спасибо. Он работает в одном случае. Можете ли вы посмотреть обновление моего сообщения? Мне нужно исключить форму для пользователя другой модели ... – mark

+0

Используйте запрос 'MyModel.objects.exclude (user__id = settings.ANONYMOUS_USER_ID) .exclude (user__is_superuser = True)'. – catavaran

+0

Большое спасибо :) – mark

0

Вы можете попробовать это также с помощью Q

from django.db.models import Q 
User.objects.exclude(Q(id=settings.ANONYMOUS_USER_ID) | Q(is_superuser=True)) 
Смежные вопросы