Как мне получить имя суперпользователя в Django?

#django #django-models #django-views

#django #django-модели #django-просмотры

Вопрос:

 users = User.objects.all()
post.author = users.name
  

Учитывая, что User именно там информация о суперпользователе хранится в базе данных. Выдает ошибку в виде:

'Query Set' object has no attribute 'name'

Комментарии:

1. users является ли queryset не User объектом

2. Имя какого суперпользователя вы хотите получить? Пользователь, делающий запрос, может быть доступен через request.user , хотя он может и не быть суперпользователем

Ответ №1:

 from django.contrib.auth.models import User
superusers = User.objects.filter(is_superuser=True)
superuser_names = [user.username for user in superusers]
  

Ответ №2:

Если у вас есть представление о том, что суперпользователь вошел в систему, вы можете проверить имя пользователя с помощью:

 if request.user.is_superuser:
    name = request.user.username
else:
    name = None
  

Ответ №3:

user = User.objects.all() возвращает файл, queryset содержащий всех пользователей в базе данных, поэтому вы не можете использовать .name для него.

Насколько я понял вашу проблему, вам нужен username of user , поэтому вы должны использовать user.username , если хотите использовать первое имя user.first_name , это будет работать только с одним объектом, А НЕ с набором запросов. Вы можете, пользователь user.is_superuser , определить, является ли пользователь суперпользователем или нет.

Это поможет -> Подробнее в документах