Familiar asyncio ORM for python, built with relations in mind
APACHE-2.0 License
Bot releases are visible (Hide)
Published by grigi over 4 years ago
This is a security fix release. We strongly recommend everyone upgrade.
contains
, starts_with
or ends_with
filters (and their case-insensitive counterparts)contains
, starts_with
or ends_with
filters (and their case-insensitive counterparts)Published by grigi over 4 years ago
generate_schemas
param being ignored in tortoise.contrib.quart.register_tortoise
source_field
paramTortoise.describe_model(<MODEL>, ...)
to <MODEL>.describe(...)
Tortoise.describe_model()
Published by grigi over 4 years ago
generate_schemas
param being ignored in tortoise.contrib.quart.register_tortoise
Published by grigi over 4 years ago
F
funtions wrapped forgetting about distinct=True
Published by grigi over 4 years ago
var IN ()
SQL generated using __in=
and __not_in
filters.Published by grigi over 4 years ago
var IN ()
SQL generated using __in=
and __not_in
filters.Published by grigi over 4 years ago
values()
& values_list()
now includes annotations.values()
& values_list()
GROUP BY
precedes HAVING
to ensure that filtering by aggregates work correctly.BooleanField
values correctly on SQLite & MySQLPublished by grigi over 4 years ago
values()
& values_list()
now includes annotations.values()
& values_list()
GROUP BY
precedes HAVING
to ensure that filtering by aggregates work correctly.BooleanField
values correctly on SQLite & MySQLPublished by grigi over 4 years ago
QuerySetSingle
now has better code completion
Created Pydantic models will now have the basic validation elements:
required
is correctly populated for required fieldsnullable
is added to the schema where nulls are acceptedmaxLength
for CharFieldsminimum
& maximum
values for integer fieldsTo get Pydantic to handle nullable/defaulted fields correctly one should do a **user.dict(exclude_unset=True)
when passing values to a Model class.
Added FastAPI
helper that is based on the starlette
helper but optionally adds helpers to catch and report with proper error DoesNotExist
and IntegrityError
Tortoise exceptions.
Allows a Pydantic model to exclude all read-only fields by setting exclude_readonly=True
when calling pydantic_model_creator
.
a Tortoise PydanticModel
now provides two extra helper functions:
from_queryset
: Returns a List[PydanticModel]
which is the format that e.g. FastAPI expectsfrom_queryset_single
: allows one to avoid calling await
multiple times to get the object and all its related items.Published by grigi over 4 years ago
This release drops support for Python 3.6:
Tortoise ORM now requires a minimum of CPython 3.7
Model docstrings and #:
comments directly preceding Field definitions are now used as docstrings and DDL descriptions.
This is now cleaned and carried as part of the docstring
parameter in describe_model(...)
If one doesn't explicitly specify a Field description=
or Model Meta.table_description=
then we default to the first line as the description.
This is done because a description is submitted to the DB, and needs to be short (depending on DB, 63 chars) in size.
Early Partial Init of models.
We now have an early init of models, which can be useful when needing Models that are not bound to a DB, but otherwise complete.
e.g. Schema generation without needing to be properly set up.
Pydantic serialisation.
We now include native support for automatically building a Pydantic model from Tortoise ORM models.
This will correctly model:
At this stage we only suport serialisation, not deserialisation.
For mode information, please see :ref:contrib_pydantic
F
expressions to in annotations. (#301)limit(...)
and offset(...)
raise ParamsError
. (#306)queryset.update()
. (#308)distinct
flag to Aggregate (#312)JSONField
Removed tortoise.aggregation
as this was deprecated since 0.14.0
Removed start_transaction
as it has been broken since 0.15.0
Removed support for Python 3.6 / PyPy-3.6, as it has been broken since 0.15.0
If you still need Python 3.6 support, you can install tortoise-orm<0.16
as we will still backport critical bugfixes to the 0.15 branch for a while.
Published by grigi over 4 years ago
0.15 series is now pseudo LTS (until May), as it is the last version to support Python3.6.
source_field
option. (#311)Published by grigi over 4 years ago
IntegrityError
with unique field and get_or_create
Published by grigi over 4 years ago
get_or_none(...)
, classmethod of Model
class, works in the same way as queryset
(#299)Published by grigi over 4 years ago
get_or_none(...)
now raises MultipleObjectsReturned
if multiple object fetched. (#298)Published by grigi over 4 years ago
to_field=
parameter for FK/O2O to a non-PK but still uniquely indexed remote field. (#287)Published by grigi over 4 years ago
queryset.update()
- This allows for atomic updates of data in the database. (#294)Published by grigi over 4 years ago
Published by grigi over 4 years ago
range
filter to support between and
syntaxPublished by grigi over 4 years ago