Вставка данных в базу данных
Следующие способы позволяют вставить данные в базу данных.
-
создание (**kwargs) -> Модель
-
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool] -
update_or_create(**kwargs) -> Model -
bulk_create(objects: List[Model]) -> None
Модель* *Model.save () метод*model.upsert ()* Model.save_lated () метод
Агент набора запросов* * Метод QuerysetProxy.create(**kwargs)* метод QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs)* метод QuerysetProxy.update_or_create(**kwargs)
Создавая
Создание (**kwargs): -> модель
Создайте экземпляр модели, сохраните его в базе данных и возвратите обновленную модель (заполняется pk, если не передается и задано автоматическое приращение).
Допустимые kwargs-это имя поля модели и правильный тип значения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Другой способ заключается в создании и сохранении модели на основе разделения.
1 2 | |
Tip
Получить или создать
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Создание и получение комбинации методов.
При попытке получить строку, удовлетворяющую критериям, при возникновении исключения NoMatch создается новая строка с использованием данных kwargs и_defaults.
При предоставлении словаря_defaults всегда устанавливаются значения, установленные в_defaults, включая переопределение явно предоставленных значений. IE get_or_create(_defaults: {"title": "I win"}, title="never used") всегда будет использовать «Я выиграл» в качестве заголовка независимо от того, указываете ли вы свои значения в kwargs или нет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
!!!предупреждает, что, несмотря на то, что это эквивалентные строки в базе данных, album и album2 в приведенном выше примере представляют собой два разных объекта Python! Обновление одного из них не обновит второй, пока вы не будете явно загружены () новые данные из базы данных.
Обратите внимание, что если вы хотите создать новый объект, вы должны либо передать значение столбца pk, либо установить автоматическое приращение столбца pk.
Обновить или создать
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_create(objects: List["Model"]) -> None
Позволяет создавать несколько объектов одновременно.
Необходимо передать допустимый список объектов модели.
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 | |
Метод модели
Каждый экземпляр модели имеет набор способов сохранения, обновления или загрузки самого себя.
Экономия
Для создания новой модели можно использовать метод QuerySet.create() или инициализировать модель в виде обычной модели pydantic и вызвать метод save().
!!!tip Узнайте больше о методе save() в models-save
Обновить вставку
Он является прокси метода save() или update(**kwargs) модели. Если pk не установлен, вызывается метод save().
!!!tip Подробнее о методе upsert() в models-upsert
Сохранить связь
Метод проходит через все связи модели, к которой он был применен, и вызывает метод upsert() для каждой из несохраненных моделей.
!!!tip Подробнее о методе save_lated () в models-save-lated
Метод QuerysetProxy
При прямом доступе к соответствующему полю ManyToMany и ReverseForeignKey, возвращайтесь к списку связанных моделей.
Но в то же время он предоставляет подмножество API QuerySet, поэтому вы можете фильтровать, создавать и выбирать связанные модели непосредственно из родительской модели.
Создавая
То же самое, что и функция создания, описанная выше, но позволяет создавать зависимые объекты с другого конца отношения.
Tip
Получить или создать
То же самое, что и функция get_or_create выше, но позволяет запрашивать или создавать зависимые объекты с другого конца отношения.
Tip
Обновить или создать
То же самое, что и функция update_or_create выше, но позволяет обновлять или создавать связанные объекты с другого конца отношения.
Tip