2.3 KiB
Read/ Load data from database
get(**kwargs): -> Modelget_or_create(**kwargs) -> Modelfirst(): -> Modelall(**kwargs) -> List[Optional[Model]]Model.load() method
get
get(**kwargs): -> Model
Get's the first row from the db meeting the criteria set by kwargs.
If no criteria set it will return the last row in db sorted by pk.
Passing a criteria is actually calling filter(**kwargs) method described below.
track = await Track.objects.get(name='The Bird')
# note that above is equivalent to await Track.objects.filter(name='The Bird').get()
track2 = track = await Track.objects.get()
track == track2 # True since it's the only row in db in our example
!!!warning If no row meets the criteria NoMatch exception is raised.
If there are multiple rows meeting the criteria the `MultipleMatches` exception is raised.
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
first
first(): -> Model
Gets the first row from the db ordered by primary key column ascending.
all
all(**kwargs) -> List[Optional["Model"]]
Returns all rows from a database for given model for set filter options.
Passing kwargs is a shortcut and equals to calling filter(**kwrags).all().
If there are no rows meeting the criteria an empty list is returned.
tracks = await Track.objects.select_related("album").all(title='Sample')
# will return a list of all Tracks with title Sample
tracks = await Track.objects.all()
# will return a list of all Tracks in database