diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 824124100..e1b5dff6a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -19,6 +19,7 @@ Changelog - Pydantic models with a Primary Key that is also a raw field of a relation is now not hidden when ``exclude_raw_fields=True`` as it is a critically important field - Raise an informative error when a field is set as nullable and primary key at the same time - Foreign key id's are now described to have the positive-integer range of the field it is related to +- Fixed prefetching over OneToOne relations 0.16.8 ------ diff --git a/tests/contrib/test_pydantic.py b/tests/contrib/test_pydantic.py index 096082690..a6781a17f 100644 --- a/tests/contrib/test_pydantic.py +++ b/tests/contrib/test_pydantic.py @@ -787,11 +787,39 @@ async def test_event(self): }, ) - @test.skip("Temp skip") async def test_address(self): addressp = await self.Address_Pydantic.from_tortoise_orm(await Address.get(street="Ocean")) - print(addressp.json(indent=4)) - # addressdict = addressp.dict() + # print(addressp.json(indent=4)) + addressdict = addressp.dict() + + # Remove timestamps + del addressdict["event"]["tournament"]["created"] + del addressdict["event"]["modified"] + + self.assertEqual( + addressdict, + { + "city": "Santa Monica", + "street": "Ocean", + "event": { + "event_id": self.event.event_id, + "name": "Test", + "tournament": { + "id": self.tournament.id, + "name": "New Tournament", + "desc": None, + }, + "reporter": {"id": self.reporter.id, "name": "The Reporter"}, + "participants": [ + {"id": self.team1.id, "name": "Onesies", "alias": None}, + {"id": self.team2.id, "name": "T-Shirts", "alias": None}, + ], + "token": self.event.token, + "alias": None, + }, + "event_id": self.address.event_id, + }, + ) async def test_tournament(self): tournamentp = await self.Tournament_Pydantic.from_tortoise_orm( diff --git a/tortoise/__init__.py b/tortoise/__init__.py index 2e9e81d9e..f338347d2 100644 --- a/tortoise/__init__.py +++ b/tortoise/__init__.py @@ -245,6 +245,7 @@ def split_reference(reference: str) -> Tuple[str, str]: else: key_o2o_object = deepcopy(related_model._meta.pk) o2o_object.to_field_instance = related_model._meta.pk + o2o_object.to_field = related_model._meta.pk_attr key_field = f"{field}_id" key_o2o_object.pk = o2o_object.pk