Django определяет, нужно ли выполнить операцию вставки или обновления, на основе наличия или отсутствия первичного ключа (обычно id) у объекта модели.
При вызове метода save():
None (или равно значению по умолчанию для AutoField, которое указывает на еще не сохраненный объект), Django предполагает, что это новый объект, который нужно вставить в базу данных. После успешной вставки база данных генерирует значение первичного ключа, и оно присваивается объекту.None), Django предполагает, что это существующий объект в базе данных, который нужно обновить. Фреймворк выполняет операцию UPDATE для соответствующей записи.Это поведение контролируется атрибутом pk (первичный ключ) объекта.
Пример:
python
Важно отметить, что переданное в save() значение первичного ключа (если оно есть) неявно указывает Django на намерение обновить существующую запись с этим ключом.
Это стандартное поведение Django ORM, которое упрощает работу с данными, абстрагируя детали SQL-операций.