77from django .db .models .lookups import Transform
88
99from .. import forms
10- from .json import build_json_mql_path
1110
1211
1312class EmbeddedModelField (models .Field ):
@@ -163,10 +162,6 @@ def get_transform(self, name):
163162 Validate that `name` is either a field of an embedded model or a
164163 lookup on an embedded model's field.
165164 """
166- if isinstance (self .ref_field , EmbeddedModelField ):
167- opts = self .ref_field .embedded_model ._meta
168- new_field = opts .get_field (name )
169- return KeyTransformFactory (name , new_field )
170165 if transform := self .ref_field .get_transform (name ):
171166 return transform
172167 suggested_lookups = difflib .get_close_matches (name , self .ref_field .get_lookups ())
@@ -181,28 +176,15 @@ def get_transform(self, name):
181176 f"{ suggestion } "
182177 )
183178
184- def preprocess_lhs (self , compiler , connection ):
179+ def as_mql (self , compiler , connection ):
185180 previous = self
186- embedded_key_transforms = []
187- json_key_transforms = []
181+ key_transforms = []
188182 while isinstance (previous , KeyTransform ):
189- if isinstance (previous .ref_field , EmbeddedModelField ):
190- embedded_key_transforms .insert (0 , previous .key_name )
191- else :
192- json_key_transforms .insert (0 , previous .key_name )
183+ key_transforms .insert (0 , previous .key_name )
193184 previous = previous .lhs
194185 mql = previous .as_mql (compiler , connection )
195- # The first json_key_transform is the field name.
196- embedded_key_transforms .append (json_key_transforms .pop (0 ))
197- return mql , embedded_key_transforms , json_key_transforms
198-
199- def as_mql (self , compiler , connection ):
200- mql , key_transforms , json_key_transforms = self .preprocess_lhs (compiler , connection )
201186 transforms = "." .join (key_transforms )
202- result = f"{ mql } .{ transforms } "
203- if json_key_transforms :
204- result = build_json_mql_path (result , json_key_transforms )
205- return result
187+ return f"{ mql } .{ transforms } "
206188
207189 @property
208190 def output_field (self ):
0 commit comments