Skip to content

Commit f517e5b

Browse files
committed
fix nested querying
1 parent e506b57 commit f517e5b

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

django_mongodb/fields/embedded_model.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ def preprocess_lhs(self, compiler, connection):
141141

142142
def key_transform(self, compiler, connection):
143143
mql, key_transforms = self.preprocess_lhs(compiler, connection)
144-
return f"{mql}.{key_transforms[0]}"
144+
transforms = ".".join(key_transforms)
145+
return f"{mql}.{transforms}"
145146

146147

147148
class KeyTransformFactory:

tests/model_fields_/models.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,19 @@ class EmbeddedModel(models.Model):
2929
someint = models.IntegerField(db_column="custom_column")
3030
auto_now = models.DateTimeField(auto_now=True)
3131
auto_now_add = models.DateTimeField(auto_now_add=True)
32+
33+
34+
class Address(models.Model):
35+
city = models.CharField(max_length=20)
36+
state = models.CharField(max_length=2)
37+
38+
39+
class Author(models.Model):
40+
name = models.CharField(max_length=10)
41+
age = models.IntegerField()
42+
address = EmbeddedModelField(Address)
43+
44+
45+
class Book(models.Model):
46+
name = models.CharField(max_length=100)
47+
author = EmbeddedModelField(Author)

tests/model_fields_/test_embedded_model.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
from django_mongodb.fields import EmbeddedModelField
77

88
from .models import (
9+
Address,
10+
Author,
11+
Book,
912
DecimalKey,
1013
DecimalParent,
1114
EmbeddedModel,
@@ -125,3 +128,9 @@ def test_gte(self):
125128
self.assertCountEqual(
126129
EmbeddedModelFieldModel.objects.filter(simple__someint__gte=3), self.objs[3:]
127130
)
131+
132+
def test_nested(self):
133+
obj = Book.objects.create(
134+
author=Author(name="Shakespeare", age=55, address=Address(city="NYC", state="NY"))
135+
)
136+
self.assertCountEqual(Book.objects.filter(author__address__city="NYC"), [obj])

0 commit comments

Comments
 (0)