Merge pull request #329 from collerek/check_pydantic_fields_order
Bug fixes
This commit is contained in:
@ -1,8 +1,15 @@
|
|||||||
|
# 0.10.18
|
||||||
|
|
||||||
|
## 🐛 Fixes
|
||||||
|
|
||||||
|
* Fix order of fields in pydantic models [#328](https://github.com/collerek/ormar/issues/328)
|
||||||
|
* Fix databases 0.5.0 support [#142](https://github.com/collerek/ormar/issues/142)
|
||||||
|
|
||||||
# 0.10.17
|
# 0.10.17
|
||||||
|
|
||||||
## ✨ Features
|
## ✨ Features
|
||||||
|
|
||||||
* Allow overwriting the default pydantic type for model fields [#312](https://github.com/collerek/ormar/issues/285)
|
* Allow overwriting the default pydantic type for model fields [#312](https://github.com/collerek/ormar/issues/312)
|
||||||
* Add support for `sqlalchemy` >=1.4 (requires `databases` >= 0.5.0) [#142](https://github.com/collerek/ormar/issues/142)
|
* Add support for `sqlalchemy` >=1.4 (requires `databases` >= 0.5.0) [#142](https://github.com/collerek/ormar/issues/142)
|
||||||
|
|
||||||
# 0.10.16
|
# 0.10.16
|
||||||
|
|||||||
@ -77,7 +77,7 @@ class UndefinedType: # pragma no cover
|
|||||||
|
|
||||||
Undefined = UndefinedType()
|
Undefined = UndefinedType()
|
||||||
|
|
||||||
__version__ = "0.10.17"
|
__version__ = "0.10.18"
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"Integer",
|
"Integer",
|
||||||
"BigInteger",
|
"BigInteger",
|
||||||
|
|||||||
@ -64,6 +64,9 @@ class PydanticMixin(RelationMixin):
|
|||||||
fields_to_process = cls._get_not_excluded_fields(
|
fields_to_process = cls._get_not_excluded_fields(
|
||||||
fields={*cls.Meta.model_fields.keys()}, include=include, exclude=exclude
|
fields={*cls.Meta.model_fields.keys()}, include=include, exclude=exclude
|
||||||
)
|
)
|
||||||
|
fields_to_process.sort(
|
||||||
|
key=lambda x: list(cls.Meta.model_fields.keys()).index(x)
|
||||||
|
)
|
||||||
for name in fields_to_process:
|
for name in fields_to_process:
|
||||||
field = cls._determine_pydantic_field_type(
|
field = cls._determine_pydantic_field_type(
|
||||||
name=name,
|
name=name,
|
||||||
|
|||||||
4
setup.py
4
setup.py
@ -63,9 +63,9 @@ setup(
|
|||||||
python_requires=">=3.6",
|
python_requires=">=3.6",
|
||||||
data_files=[("", ["LICENSE.md"])],
|
data_files=[("", ["LICENSE.md"])],
|
||||||
install_requires=[
|
install_requires=[
|
||||||
"databases>=0.3.2,<0.4.4",
|
"databases>=0.3.2,<0.5.1",
|
||||||
"pydantic>=1.6.1,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<=1.8.2",
|
"pydantic>=1.6.1,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<=1.8.2",
|
||||||
"sqlalchemy>=1.3.18,<=1.3.23",
|
"sqlalchemy>=1.3.18,<=1.4.23",
|
||||||
"typing_extensions>=3.7,<=3.7.4.3",
|
"typing_extensions>=3.7,<=3.7.4.3",
|
||||||
],
|
],
|
||||||
extras_require={
|
extras_require={
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
import databases
|
||||||
|
import pytest
|
||||||
|
import sqlalchemy
|
||||||
|
|
||||||
|
import ormar
|
||||||
|
from tests.settings import DATABASE_URL
|
||||||
|
|
||||||
|
metadata = sqlalchemy.MetaData()
|
||||||
|
database = databases.Database(DATABASE_URL)
|
||||||
|
|
||||||
|
|
||||||
|
class BaseMeta(ormar.ModelMeta):
|
||||||
|
database = database
|
||||||
|
metadata = metadata
|
||||||
|
|
||||||
|
|
||||||
|
class TestModel(ormar.Model):
|
||||||
|
class Meta:
|
||||||
|
database = database
|
||||||
|
metadata = metadata
|
||||||
|
|
||||||
|
a: int = ormar.Integer(primary_key=True)
|
||||||
|
b: str = ormar.String(max_length=1)
|
||||||
|
c: str = ormar.String(max_length=1)
|
||||||
|
d: str = ormar.String(max_length=1)
|
||||||
|
e: str = ormar.String(max_length=1)
|
||||||
|
f: str = ormar.String(max_length=1)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True, scope="module")
|
||||||
|
def create_test_database():
|
||||||
|
engine = sqlalchemy.create_engine(DATABASE_URL)
|
||||||
|
metadata.drop_all(engine)
|
||||||
|
metadata.create_all(engine)
|
||||||
|
yield
|
||||||
|
metadata.drop_all(engine)
|
||||||
|
|
||||||
|
|
||||||
|
def test_model_field_order():
|
||||||
|
TestCreate = TestModel.get_pydantic(exclude={"a"})
|
||||||
|
assert list(TestCreate.__fields__.keys()) == ["b", "c", "d", "e", "f"]
|
||||||
Reference in New Issue
Block a user