@@ -97,18 +97,26 @@ def register_related(self, key, model, collection):
97
97
# Get the foreign key value from the model
98
98
foreign_key_value = getattr (model , self .local_key )
99
99
100
+ # If foreign key is None, register None as the relationship
101
+ if foreign_key_value is None :
102
+ model .add_relation ({key : None })
103
+ return
104
+
105
+ # Convert foreign key to string for consistent lookup
106
+ foreign_key_value = str (foreign_key_value )
107
+
100
108
# If collection is a dict (mapped), use it directly
101
109
if isinstance (collection , dict ):
102
110
related = collection .get (foreign_key_value )
103
111
else :
104
112
# Otherwise find the related model in the collection
105
113
related = None
106
114
for item in collection :
107
- if getattr (item , self .foreign_key ) == foreign_key_value :
115
+ if str ( getattr (item , self .foreign_key ) ) == foreign_key_value :
108
116
related = item
109
117
break
110
118
111
- # Register the relationship
119
+ # Register the relationship with the model instance
112
120
model .add_relation ({key : related })
113
121
114
122
def map_related (self , related_result ):
@@ -122,7 +130,9 @@ def map_related(self, related_result):
122
130
"""
123
131
mapped = {}
124
132
for item in related_result :
125
- mapped [getattr (item , self .foreign_key )] = item
133
+ # Convert foreign key to string to ensure consistent key types
134
+ key = str (getattr (item , self .foreign_key ))
135
+ mapped [key ] = item
126
136
return mapped
127
137
128
138
def attach (self , current_model , related_record ):
0 commit comments