@@ -34,6 +34,18 @@ def __str__(self):
3434 return self .name
3535
3636
37+ class Address (Model ):
38+ city = fields .CharField (max_length = 64 )
39+ street = fields .CharField (max_length = 128 )
40+
41+ event : fields .OneToOneRelation [Event ] = fields .OneToOneField (
42+ "models.Event" , on_delete = fields .CASCADE , related_name = "address" , pk = True
43+ )
44+
45+ def __str__ (self ):
46+ return f"Address({ self .city } , { self .street } )"
47+
48+
3749class Team (Model ):
3850 id = fields .IntField (pk = True )
3951 name = fields .TextField ()
@@ -53,6 +65,9 @@ async def run():
5365 await Event (name = "Without participants" , tournament_id = tournament .id ).save ()
5466 event = Event (name = "Test" , tournament_id = tournament .id )
5567 await event .save ()
68+
69+ await Address .create (city = "Santa Monica" , street = "Ocean" , event = event )
70+
5671 participants = []
5772 for i in range (2 ):
5873 team = Team (name = f"Team { (i + 1 )} " )
@@ -96,6 +111,14 @@ async def run():
96111
97112 print (await Event .filter (id = event .id ).values_list ("id" , "participants__name" ))
98113
114+ print (await Address .filter (event = event ).first ())
115+
116+ event_reload1 = await Event .filter (id = event .id ).first ()
117+ print (await event_reload1 .address )
118+
119+ event_reload2 = await Event .filter (id = event .id ).prefetch_related ("address" ).first ()
120+ print (event_reload2 .address )
121+
99122
100123if __name__ == "__main__" :
101124 run_async (run ())
0 commit comments