РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
582 of 818 menu

Функция get_user_model

Функция get_user_model предназначена для получения модели пользователя, которая активна в текущем проекте Django. Она возвращает класс модели пользователя, который может быть стандартной моделью User или кастомной моделью, заданной в настройках проекта через переменную AUTH_USER_MODEL. Использование этой функции гарантирует, что код всегда будет работать с правильной моделью пользователя, даже если она была заменена на кастомную.

Синтаксис

from django.contrib.auth import get_user_model UserModel = get_user_model()

Функция не принимает аргументов и возвращает класс модели пользователя.

Пример

Давайте получим модель пользователя и создадим нового пользователя:

from django.contrib.auth import get_user_model User = get_user_model() user = User.objects.create_user( username="john_doe", email="john@example.com", password="secure_password123" ) print(user.username) print(user.email)

Результат выполнения кода:

"john_doe" "john@example.com"

Пример

Давайте используем get_user_model в определении модели с внешним ключом на пользователя:

from django.db import models from django.contrib.auth import get_user_model User = get_user_model() class Article(models.Model): title = models.CharField(max_length=200) author = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title

Теперь можно создать статью и связать ее с пользователем:

from myapp.models import Article from django.contrib.auth import get_user_model User = get_user_model() user = User.objects.get(username="john_doe") article = Article.objects.create( title="My first article", author=user ) print(article.title) print(article.author.username)

Результат выполнения кода:

"My first article" "john_doe"

Пример

Давайте выполним фильтрацию пользователей с помощью полученной модели:

from django.contrib.auth import get_user_model User = get_user_model() active_users = User.objects.filter(is_active=True) for user in active_users: print(f"{user.username} - {user.email}")

Результат выполнения кода:

"john_doe - john@example.com" "admin - admin@example.com"

Смотрите также

  • функция authenticate,
    которая проверяет учетные данные пользователя
  • функция login,
    которая выполняет вход пользователя в систему
  • класс User,
    который представляет модель пользователя
  • менеджер UserManager,
    который предоставляет методы для работы с пользователями
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить