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

Метод save

Метод save применяется к экземпляру модели и сохраняет его в базу данных. При вызове метода Django выполняет операцию INSERT, если объект новый, или UPDATE, если он уже существует в базе. Метод принимает необязательные параметры, которые управляют процессом сохранения.

Синтаксис

instance.save(force_insert=False, force_update=False, using=None, update_fields=None)

Параметры метода

  • force_insert - принудительное выполнение операции INSERT, даже если объект уже существует
  • force_update - принудительное выполнение операции UPDATE, даже если объект новый
  • using - имя базы данных, в которую будет сохранён объект
  • update_fields - список полей, которые необходимо обновить при сохранении

Пример . Сохранение нового объекта

Давайте создадим новую статью и сохраним её в базу данных:

from myapp.models import Article from django.utils import timezone article = Article( title="My first article", content="This is the content of my first article.", created_at=timezone.now() ) article.save() print(f"Article saved with ID: {article.id}")

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

"Article saved with ID: 1"

Пример . Обновление существующего объекта

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

from myapp.models import Article article = Article.objects.get(id=1) article.title = "My updated article" article.save() print(f"Article title updated: {article.title}")

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

"Article title updated: My updated article"

Пример . Использование параметра update_fields

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

from myapp.models import Article article = Article.objects.get(id=1) article.title = "Article with limited fields updated" article.save(update_fields=['title']) print("Only the title field was updated")

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

"Only the title field was updated"

Пример . Переопределение метода save

Переопределим метод save в модели, чтобы автоматически заполнять поле slug на основе заголовка перед сохранением:

from django.db import models from django.utils.text import slugify class Article(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(unique=True) content = models.TextField() def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.title) super().save(*args, **kwargs) article = Article( title="How to use Django save method", content="This article explains the save method." ) article.save() print(f"Slug generated: {article.slug}")

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

"Slug generated: how-to-use-django-save-method"

Пример . Использование параметра force_insert

Давайте принудительно вставим объект как новый, даже если он может существовать в базе:

from myapp.models import Article article = Article( title="Force insert example", content="This article is forced to be inserted." ) article.save(force_insert=True) print(f"Article forced inserted with ID: {article.id}")

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

"Article forced inserted with ID: 2"

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

  • метод delete,
    который удаляет объект из базы данных
  • метод refresh_from_db,
    который обновляет объект из базы данных
  • сигнал pre_save,
    который отправляется перед сохранением объекта
  • сигнал post_save,
    который отправляется после сохранения объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить