Skip to content

Commit e5beb83

Browse files
committed
Refactor.
1 parent 17e9517 commit e5beb83

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

django_mongodb_backend/fields/embedded_model.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -197,24 +197,24 @@ def get_transform(self, name):
197197
f"{suggestion}"
198198
)
199199

200-
def as_mql_expr(self, compiler, connection):
200+
def _get_target_path(self):
201201
previous = self
202202
key_transforms = []
203203
while isinstance(previous, KeyTransform):
204204
key_transforms.insert(0, previous.key_name)
205205
previous = previous.lhs
206-
mql = previous.as_mql(compiler, connection)
206+
return key_transforms, previous
207+
208+
def as_mql_expr(self, compiler, connection):
209+
key_transforms, parent_field = self._get_target_path()
210+
mql = parent_field.as_mql(compiler, connection)
207211
for key in key_transforms:
208212
mql = {"$getField": {"input": mql, "field": key}}
209213
return mql
210214

211215
def as_mql_path(self, compiler, connection):
212-
previous = self
213-
key_transforms = []
214-
while isinstance(previous, KeyTransform):
215-
key_transforms.insert(0, previous.key_name)
216-
previous = previous.lhs
217-
mql = previous.as_mql(compiler, connection, as_path=True)
216+
key_transforms, parent_field = self._get_target_path()
217+
mql = parent_field.as_mql(compiler, connection, as_path=True)
218218
mql_path = ".".join(key_transforms)
219219
return f"{mql}.{mql_path}"
220220

0 commit comments

Comments
 (0)