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

Метод get_or_create

Метод get_or_create применяется к менеджеру модели и возвращает кортеж, содержащий объект и булево значение, указывающее, был ли объект создан. В качестве аргументов метод принимает параметры для поиска объекта, а также дополнительные значения для создания в случае отсутствия объекта. Метод выполняет запрос к базе данных, и если объект не найден, создает новый с переданными параметрами.

Синтаксис

Model.objects.get_or_create(**kwargs)

Где kwargs - это набор параметров для поиска объекта. Метод возвращает кортеж (object, created), где object - полученный или созданный объект, а created - булево значение (True, если объект был создан, False - если получен из базы).

Пример

Давайте получим категорию с названием "Django", а если её нет - создадим:

from myapp.models import Category category, created = Category.objects.get_or_create(name="Django") print(f"Category: {category.name}, Created: {created}")

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

"Category: Django, Created: True"

Пример

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

from myapp.models import User user, created = User.objects.get_or_create( username="john_doe", defaults={"email": "john@example.com", "age": 30} ) print(f"User: {user.username}, Created: {created}")

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

"User: john_doe, Created: False"

Пример

Давайте создадим статью с заголовком "My first post", если такой ещё нет, и укажем статус:

from myapp.models import Article article, created = Article.objects.get_or_create( title="My first post", defaults={"status": "draft", "views": 0} ) print(f"Article: {article.title}, Views: {article.views}")

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

"Article: My first post, Views: 0"

Пример

Давайте создадим комментарий к статье, если его ещё нет:

from myapp.models import Comment, Article article = Article.objects.get(id=1) comment, created = Comment.objects.get_or_create( article=article, author="anonymous", defaults={"text": "Great article!", "rating": 5} ) print(f"Comment ID: {comment.id}, Created: {created}")

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

"Comment ID: 42, Created: True"

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

  • метод update_or_create,
    который обновляет объект или создает его при отсутствии
  • метод create,
    который создает объект без предварительной проверки
  • метод get,
    который получает одну запись из базы данных
  • метод filter,
    который фильтрует QuerySet по заданным условиям
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить