Обновить данные в базе данных
Следующие методы и функции позволяют обновлять существующие данные в базе данных.
-
update(each: bool = False, **kwargs) -> int -
update_or_create(**kwargs) -> Model -
bulk_update(objects: List[Model], columns: List[str] = None) -> None -
Модель
- Метод update ()
- Метод Model. upsert ()
- Model.save
-
Агент набора запросов
-
QuerysetProxy.update_or_create(**kwargs)Методология
Обновить
update(each: bool = False, **kwargs) -> int
Обновление уровня QuerySet используется для одновременного обновления нескольких записей с одним и тем же значением.
Для обновления всей таблицы необходимо либо отфильтровать QuerySet, либо ввести флаг each = True.
Если вы не предоставляете этот флаг или фильтр, будет генерироваться QueryDefinitionError.
Возвращает обновленное число строк.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | |
!!!Предупреждение о необходимости фильтрации набора запросов перед обновлением во избежание случайного переопределения.
1 | |
Обновить или создать
update_or_create(**kwargs) -> Model
Обновление модели или создание новой модели без соответствия в базе данных.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
Обратите внимание, что если вы хотите создать новый объект, вы должны либо передать значение столбца pk, либо установить автоматическое приращение столбца pk.
Пакетные обновления
bulk_update(objects: List["Model"], columns: List[str] = None) -> None
Позволяет одновременно обновлять несколько экземпляров.
Все передаваемые модели должны быть заполнены ключевыми столбцами.
Можно также выбрать поля для обновления, передав список столбцов в виде списка имен строк.
1 2 3 4 5 6 7 8 9 10 11 | |
Метод модели
Каждый экземпляр модели имеет набор способов сохранения, обновления или загрузки самого себя.
обновление
Вы можете обновить модель, обновив свойства модели (поля) и вызовав метод update().
При попытке обновить модель без установки первичного ключа будет генерировано исключение ModelPersistenceError.
!!!tip Узнайте больше о методе update() в models-update
Обновить вставку
Он является агентом метода save() или update(**kwargs) модели. Если установлен pk, вызывается метод update().
!!!tip Подробнее о методе upsert() в models-upsert
Сохранить связь
Метод проходит через все связи модели, к которой он был применен, и вызывает метод upsert() для каждой из несохраненных моделей.
!!!tip Подробнее о методе save_lated () в models-save-lated
Метод QuerysetProxy
При прямом доступе к соответствующему полю ManyToMany и ReverseForeignKey, возвращайтесь к списку связанных моделей.
Но в то же время он предоставляет подмножество API QuerySet, поэтому вы можете фильтровать, создавать и выбирать связанные модели непосредственно из родительской модели.
Обновить или создать
То же самое, что и функция update_or_create выше, но позволяет обновлять или создавать связанные объекты с другого конца отношения.
Tip