2.2 KiB
Create / Insert data into database
create(**kwargs): -> Modelget_or_create(**kwargs) -> Modelupdate_or_create(**kwargs) -> Modelbulk_create(objects: List[Model]) -> NoneModel.save()methodModel.upsert()method
create
create(**kwargs): -> Model
Creates the model instance, saves it in a database and returns the updates model (with pk populated if not passed and autoincrement is set).
The allowed kwargs are Model fields names and proper value types.
malibu = await Album.objects.create(name="Malibu")
await Track.objects.create(album=malibu, title="The Bird", position=1)
The alternative is a split creation and persistence of the Model.
malibu = Album(name="Malibu")
await malibu.save()
!!!tip Check other Model methods in [models][models]
get_or_create
get_or_create(**kwargs) -> Model
Combination of create and get methods.
Tries to get a row meeting the criteria and if NoMatch exception is raised it creates
a new one with given kwargs.
album = await Album.objects.get_or_create(name='The Cat')
# object is created as it does not exist
album2 = await Album.objects.get_or_create(name='The Cat')
assert album == album2
# return True as the same db row is returned
!!!warning Despite being a equivalent row from database the album and album2 in
example above are 2 different python objects!
Updating one of them will not refresh the second one until you excplicitly load() the
fresh data from db.
!!!note Note that if you want to create a new object you either have to pass pk column value or pk column has to be set as autoincrement
update_or_create
update_or_create(**kwargs) -> Model
Updates the model, or in case there is no match in database creates a new one.
--8<-- "../docs_src/queries/docs003.py"
!!!note Note that if you want to create a new object you either have to pass pk column value or pk column has to be set as autoincrement
bulk_create
bulk_create(objects: List["Model"]) -> None
Allows you to create multiple objects at once.
A valid list of Model objects needs to be passed.
--8<-- "../docs_src/queries/docs004.py"