Мне интересно, как я могу получить текущий идентификатор пользователя в views.py? Кроме того, как я могу получить идентификатор группы текущего пользователя? Нужно ли напрямую запрашивать базу данных с помощью идентификатора пользователя? Большое спасибо.Django: как получить идентификатор группы текущего пользователя
ответ
Посмотреть функции получают request
как один из их параметров. Предполагая, что вы используете встроенное приложение auth, текущий пользователь (если есть) будет request.user
. Это может быть представление anonymous user, если сеанс не имеет зарегистрированного пользователя - см. docs, если вы не хотите этого допускать.
Пользователи могут быть во многих группах, поэтому я не совсем уверен, что вы подразумеваете под «id группы». Группы пользователей доступны как стандартное поле «многие ко многим», как request.user.groups
. Это объект-менеджер, поэтому вы можете применять фильтры и тому подобное, чтобы получить их все, request.user.groups.all()
.
Если в вашем случае используется одна и только одна группа пользователей, вы можете получить эту группу, используя request.user.groups.get()
. objects.get()
работает несколько аналогично objects.all()[0]
. Таким образом, он будет терпеть неудачу, если для этого пользователя будет более одной группы.
https://github.com/django/django/blob/master/django/db/models/query.py
def get(self, *args, **kwargs):
"""
Performs the query and returns a single object matching the given
keyword arguments.
"""
clone = self.filter(*args, **kwargs)
if self.query.can_filter():
clone = clone.order_by()
clone = clone[:MAX_GET_RESULTS + 1]
num = len(clone)
if num == 1:
return clone._result_cache[0]
if not num:
raise self.model.DoesNotExist(
"%s matching query does not exist." %
self.model._meta.object_name)
raise self.model.MultipleObjectsReturned(
"get() returned more than one %s -- it returned %s!" % (
self.model._meta.object_name,
num if num <= MAX_GET_RESULTS else 'more than %s' % MAX_GET_RESULTS
)
)
Если вы после категоризации пользователей, просто расширить пользовательскую модель и установить ссылочное поле. Использование групп разрешений, если на то пошло, не похоже на хороший подход ко мне.
user = auth.get_user(request)
group = request.user.groups.values_list('name', flat=True).first()
Работы Perfect!
Так и может заменить 'имя' с 'ид' получить группы ID
- 1. Как получить идентификатор текущего зарегистрированного пользователя?
- 2. Как получить идентификатор текущего содержимого
- 3. Получить уникальный идентификатор для текущего пользователя
- 4. Как получить идентификатор пользователя текущего пользователя в Tridion?
- 5. Получить текущего пользователя в Django Внешний шаблон
- 6. Получить текущего пользователя в django-filter Метод
- 7. Получить текущего пользователя в Django admin
- 8. Django: Получить текущего пользователя в модели save
- 9. django получение текущего идентификатора пользователя
- 10. Как я могу получить общедоступный идентификатор текущего пользователя Facebook (а не идентификатор области) или получить фотографию профиля текущего пользователя
- 11. Как получить идентификатор текущего блога
- 12. Как получить идентификатор текущего элемента?
- 13. Как получить идентификатор текущего фрагмента?
- 14. Как получить идентификатор текущего пользователя в методе открывания websocket?
- 15. Как получить первый идентификатор процесса в MYSQL текущего пользователя?
- 16. Как получить идентификатор текущего пользователя, зарегистрированного в grails?
- 17. Идентификатор пользователя и идентификатор группы в Linux
- 18. Рельсы, как получить идентификатор от текущего url
- 19. получить идентификатор текущего вставленного ID
- 20. Как получить текущего пользователя в теге шаблона?
- 21. доступа идентификатор текущего пользователя на Джанго модели
- 22. Идентификатор пользователя Django равен
- 23. Как получить идентификатор пользователя
- 24. Как получить идентификатор пользователя?
- 25. Как получить идентификатор пользователя
- 26. Как получить AD текущего пользователя
- 27. Как получить пользователя текущего процесса
- 28. Как получить текущего пользователя Принцип
- 29. Знать facebook идентификатор текущего вошедшего пользователя
- 30. Как получить текущего пользователя от узла?
Спасибо! Мне нужен идентификатор группы, потому что я расширил групповые модели, поэтому я думаю, что мне понадобится идентификатор группы, чтобы получить значения полей. Но с request.user.groups.all() кажется, что он возвращает только имя группы ... – Robert
'groups.all()' возвращает фактические объекты 'Group'. Если вы «распечатываете» их, они будут представлены с использованием их имен, но также должно работать 'groups.all() [0] .somefield'. Если ваши расширения моделей не изменили отношения. Вы должны показать свой код модели в своем вопросе, если это так. –
Эй, у меня есть еще один вопрос: http://stackoverflow.com/questions/19898284/django-why-the-manytomany-choice-box-only-has-on-side вы не поможете мне в этом? – Robert