Skip to content

Commit 3d18d03

Browse files
authored
Fix query error when model with o2o pk and m2m field (#1783)
* fix: query error when m2m combine with o2o * refactor: more readable
1 parent 1e6089d commit 3d18d03

File tree

6 files changed

+192
-27
lines changed

6 files changed

+192
-27
lines changed

CHANGELOG.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ Changelog
99
0.22
1010
====
1111

12+
0.22.1
13+
------
14+
Fixed
15+
^^^^^
16+
- Fix unable to use ManyToManyField if OneToOneField passed as Primary Key (#1783)
17+
1218
0.22.0
1319
------
1420
Fixed

tests/contrib/test_pydantic.py

Lines changed: 129 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,42 @@ def test_event_schema(self):
6868
self.Event_Pydantic.model_json_schema(),
6969
{
7070
"$defs": {
71-
"Address_coqnj7_leaf": {
71+
"Address_e4rhju_leaf": {
7272
"additionalProperties": False,
7373
"properties": {
7474
"city": {"maxLength": 64, "title": "City", "type": "string"},
7575
"street": {"maxLength": 128, "title": "Street", "type": "string"},
76+
"m2mwitho2opks": {
77+
"items": {"$ref": "#/$defs/M2mWithO2oPk_leajz6_leaf"},
78+
"title": "M2Mwitho2Opks",
79+
"type": "array",
80+
},
7681
"event_id": {
7782
"maximum": 9223372036854775807,
7883
"minimum": -9223372036854775808,
7984
"title": "Event Id",
8085
"type": "integer",
8186
},
8287
},
83-
"required": ["city", "street", "event_id"],
88+
"required": ["city", "street", "event_id", "m2mwitho2opks"],
8489
"title": "Address",
8590
"type": "object",
8691
},
92+
"M2mWithO2oPk_leajz6_leaf": {
93+
"additionalProperties": False,
94+
"properties": {
95+
"id": {
96+
"maximum": 2147483647,
97+
"minimum": -2147483648,
98+
"title": "Id",
99+
"type": "integer",
100+
},
101+
"name": {"maxLength": 64, "title": "Name", "type": "string"},
102+
},
103+
"required": ["id", "name"],
104+
"title": "M2mWithO2oPk",
105+
"type": "object",
106+
},
87107
"Reporter_fgnv33_leaf": {
88108
"additionalProperties": False,
89109
"description": "Whom is assigned as the reporter",
@@ -202,7 +222,7 @@ def test_event_schema(self):
202222
},
203223
"address": {
204224
"anyOf": [
205-
{"$ref": "#/$defs/Address_coqnj7_leaf"},
225+
{"$ref": "#/$defs/Address_e4rhju_leaf"},
206226
{"type": "null"},
207227
],
208228
"nullable": True,
@@ -229,7 +249,7 @@ def test_eventlist_schema(self):
229249
self.Event_Pydantic_List.model_json_schema(),
230250
{
231251
"$defs": {
232-
"Event_padfez": {
252+
"Event_mfxmwb": {
233253
"additionalProperties": False,
234254
"description": "Events on the calendar",
235255
"properties": {
@@ -282,7 +302,7 @@ def test_eventlist_schema(self):
282302
},
283303
"address": {
284304
"anyOf": [
285-
{"$ref": "#/$defs/Address_coqnj7_leaf"},
305+
{"$ref": "#/$defs/Address_e4rhju_leaf"},
286306
{"type": "null"},
287307
],
288308
"nullable": True,
@@ -302,22 +322,42 @@ def test_eventlist_schema(self):
302322
"title": "Event",
303323
"type": "object",
304324
},
305-
"Address_coqnj7_leaf": {
325+
"Address_e4rhju_leaf": {
306326
"additionalProperties": False,
307327
"properties": {
308328
"city": {"maxLength": 64, "title": "City", "type": "string"},
309329
"street": {"maxLength": 128, "title": "Street", "type": "string"},
330+
"m2mwitho2opks": {
331+
"items": {"$ref": "#/$defs/M2mWithO2oPk_leajz6_leaf"},
332+
"title": "M2Mwitho2Opks",
333+
"type": "array",
334+
},
310335
"event_id": {
311336
"maximum": 9223372036854775807,
312337
"minimum": -9223372036854775808,
313338
"title": "Event Id",
314339
"type": "integer",
315340
},
316341
},
317-
"required": ["city", "street", "event_id"],
342+
"required": ["city", "street", "event_id", "m2mwitho2opks"],
318343
"title": "Address",
319344
"type": "object",
320345
},
346+
"M2mWithO2oPk_leajz6_leaf": {
347+
"additionalProperties": False,
348+
"properties": {
349+
"id": {
350+
"maximum": 2147483647,
351+
"minimum": -2147483648,
352+
"title": "Id",
353+
"type": "integer",
354+
},
355+
"name": {"maxLength": 64, "title": "Name", "type": "string"},
356+
},
357+
"required": ["id", "name"],
358+
"title": "M2mWithO2oPk",
359+
"type": "object",
360+
},
321361
"Reporter_fgnv33_leaf": {
322362
"additionalProperties": False,
323363
"description": "Whom is assigned as the reporter",
@@ -392,7 +432,7 @@ def test_eventlist_schema(self):
392432
},
393433
},
394434
"description": "Events on the calendar",
395-
"items": {"$ref": "#/$defs/Event_padfez"},
435+
"items": {"$ref": "#/$defs/Event_mfxmwb"},
396436
"title": "Event_list",
397437
"type": "array",
398438
},
@@ -467,6 +507,21 @@ def test_address_schema(self):
467507
"title": "Event",
468508
"type": "object",
469509
},
510+
"M2mWithO2oPk_leajz6_leaf": {
511+
"additionalProperties": False,
512+
"properties": {
513+
"id": {
514+
"maximum": 2147483647,
515+
"minimum": -2147483648,
516+
"title": "Id",
517+
"type": "integer",
518+
},
519+
"name": {"maxLength": 64, "title": "Name", "type": "string"},
520+
},
521+
"required": ["id", "name"],
522+
"title": "M2mWithO2oPk",
523+
"type": "object",
524+
},
470525
"Reporter_fgnv33_leaf": {
471526
"additionalProperties": False,
472527
"description": "Whom is assigned as the reporter",
@@ -544,6 +599,11 @@ def test_address_schema(self):
544599
"properties": {
545600
"city": {"maxLength": 64, "title": "City", "type": "string"},
546601
"street": {"maxLength": 128, "title": "Street", "type": "string"},
602+
"m2mwitho2opks": {
603+
"items": {"$ref": "#/$defs/M2mWithO2oPk_leajz6_leaf"},
604+
"title": "M2Mwitho2Opks",
605+
"type": "array",
606+
},
547607
"event": {"$ref": "#/$defs/Event_zvunzw_leaf"},
548608
"event_id": {
549609
"maximum": 9223372036854775807,
@@ -552,7 +612,7 @@ def test_address_schema(self):
552612
"type": "integer",
553613
},
554614
},
555-
"required": ["city", "street", "event", "event_id"],
615+
"required": ["city", "street", "event", "event_id", "m2mwitho2opks"],
556616
"title": "Address",
557617
"type": "object",
558618
},
@@ -563,7 +623,7 @@ def test_tournament_schema(self):
563623
self.Tournament_Pydantic.model_json_schema(),
564624
{
565625
"$defs": {
566-
"Event_jgrv4c_leaf": {
626+
"Event_ln6p2q_leaf": {
567627
"additionalProperties": False,
568628
"description": "Events on the calendar",
569629
"properties": {
@@ -612,7 +672,7 @@ def test_tournament_schema(self):
612672
},
613673
"address": {
614674
"anyOf": [
615-
{"$ref": "#/$defs/Address_coqnj7_leaf"},
675+
{"$ref": "#/$defs/Address_e4rhju_leaf"},
616676
{"type": "null"},
617677
],
618678
"nullable": True,
@@ -631,22 +691,42 @@ def test_tournament_schema(self):
631691
"title": "Event",
632692
"type": "object",
633693
},
634-
"Address_coqnj7_leaf": {
694+
"Address_e4rhju_leaf": {
635695
"additionalProperties": False,
636696
"properties": {
637697
"city": {"maxLength": 64, "title": "City", "type": "string"},
638698
"street": {"maxLength": 128, "title": "Street", "type": "string"},
699+
"m2mwitho2opks": {
700+
"items": {"$ref": "#/$defs/M2mWithO2oPk_leajz6_leaf"},
701+
"title": "M2Mwitho2Opks",
702+
"type": "array",
703+
},
639704
"event_id": {
640705
"maximum": 9223372036854775807,
641706
"minimum": -9223372036854775808,
642707
"title": "Event Id",
643708
"type": "integer",
644709
},
645710
},
646-
"required": ["city", "street", "event_id"],
711+
"required": ["city", "street", "event_id", "m2mwitho2opks"],
647712
"title": "Address",
648713
"type": "object",
649714
},
715+
"M2mWithO2oPk_leajz6_leaf": {
716+
"additionalProperties": False,
717+
"properties": {
718+
"id": {
719+
"maximum": 2147483647,
720+
"minimum": -2147483648,
721+
"title": "Id",
722+
"type": "integer",
723+
},
724+
"name": {"maxLength": 64, "title": "Name", "type": "string"},
725+
},
726+
"required": ["id", "name"],
727+
"title": "M2mWithO2oPk",
728+
"type": "object",
729+
},
650730
"Reporter_fgnv33_leaf": {
651731
"additionalProperties": False,
652732
"description": "Whom is assigned as the reporter",
@@ -711,7 +791,7 @@ def test_tournament_schema(self):
711791
},
712792
"events": {
713793
"description": "What tournaments is a happenin'",
714-
"items": {"$ref": "#/$defs/Event_jgrv4c_leaf"},
794+
"items": {"$ref": "#/$defs/Event_ln6p2q_leaf"},
715795
"title": "Events",
716796
"type": "array",
717797
},
@@ -727,7 +807,7 @@ def test_team_schema(self):
727807
self.Team_Pydantic.model_json_schema(),
728808
{
729809
"$defs": {
730-
"Event_n2kadx_leaf": {
810+
"Event_lfs4vy_leaf": {
731811
"additionalProperties": False,
732812
"description": "Events on the calendar",
733813
"properties": {
@@ -775,7 +855,7 @@ def test_team_schema(self):
775855
},
776856
"address": {
777857
"anyOf": [
778-
{"$ref": "#/$defs/Address_coqnj7_leaf"},
858+
{"$ref": "#/$defs/Address_e4rhju_leaf"},
779859
{"type": "null"},
780860
],
781861
"nullable": True,
@@ -794,22 +874,42 @@ def test_team_schema(self):
794874
"title": "Event",
795875
"type": "object",
796876
},
797-
"Address_coqnj7_leaf": {
877+
"Address_e4rhju_leaf": {
798878
"additionalProperties": False,
799879
"properties": {
800880
"city": {"maxLength": 64, "title": "City", "type": "string"},
801881
"street": {"maxLength": 128, "title": "Street", "type": "string"},
882+
"m2mwitho2opks": {
883+
"items": {"$ref": "#/$defs/M2mWithO2oPk_leajz6_leaf"},
884+
"title": "M2Mwitho2Opks",
885+
"type": "array",
886+
},
802887
"event_id": {
803888
"maximum": 9223372036854775807,
804889
"minimum": -9223372036854775808,
805890
"title": "Event Id",
806891
"type": "integer",
807892
},
808893
},
809-
"required": ["city", "street", "event_id"],
894+
"required": ["city", "street", "event_id", "m2mwitho2opks"],
810895
"title": "Address",
811896
"type": "object",
812897
},
898+
"M2mWithO2oPk_leajz6_leaf": {
899+
"additionalProperties": False,
900+
"properties": {
901+
"id": {
902+
"maximum": 2147483647,
903+
"minimum": -2147483648,
904+
"title": "Id",
905+
"type": "integer",
906+
},
907+
"name": {"maxLength": 64, "title": "Name", "type": "string"},
908+
},
909+
"required": ["id", "name"],
910+
"title": "M2mWithO2oPk",
911+
"type": "object",
912+
},
813913
"Reporter_fgnv33_leaf": {
814914
"additionalProperties": False,
815915
"description": "Whom is assigned as the reporter",
@@ -874,7 +974,7 @@ def test_team_schema(self):
874974
"title": "Alias",
875975
},
876976
"events": {
877-
"items": {"$ref": "#/$defs/Event_n2kadx_leaf"},
977+
"items": {"$ref": "#/$defs/Event_lfs4vy_leaf"},
878978
"title": "Events",
879979
"type": "array",
880980
},
@@ -918,6 +1018,7 @@ async def test_eventlist(self):
9181018
"address": {
9191019
"event_id": self.address.pk,
9201020
"city": "Santa Monica",
1021+
"m2mwitho2opks": [],
9211022
"street": "Ocean",
9221023
},
9231024
},
@@ -970,7 +1071,12 @@ async def test_event(self):
9701071
{"id": self.team1.id, "name": "Onesies", "alias": None},
9711072
{"id": self.team2.id, "name": "T-Shirts", "alias": None},
9721073
],
973-
"address": {"event_id": self.address.pk, "city": "Santa Monica", "street": "Ocean"},
1074+
"address": {
1075+
"event_id": self.address.pk,
1076+
"city": "Santa Monica",
1077+
"m2mwitho2opks": [],
1078+
"street": "Ocean",
1079+
},
9741080
},
9751081
)
9761082

@@ -1004,6 +1110,7 @@ async def test_address(self):
10041110
"alias": None,
10051111
},
10061112
"event_id": self.address.event_id,
1113+
"m2mwitho2opks": [],
10071114
},
10081115
)
10091116

@@ -1040,6 +1147,7 @@ async def test_tournament(self):
10401147
"address": {
10411148
"event_id": self.address.pk,
10421149
"city": "Santa Monica",
1150+
"m2mwitho2opks": [],
10431151
"street": "Ocean",
10441152
},
10451153
},
@@ -1093,6 +1201,7 @@ async def test_team(self):
10931201
"address": {
10941202
"event_id": self.address.pk,
10951203
"city": "Santa Monica",
1204+
"m2mwitho2opks": [],
10961205
"street": "Ocean",
10971206
},
10981207
},

0 commit comments

Comments
 (0)