|
8 | 8 | from django_mongodb_backend.fields import EmbeddedModelArrayField |
9 | 9 | from django_mongodb_backend.models import EmbeddedModel |
10 | 10 |
|
11 | | -from .models import Artifact, Exhibit, Movie, Restoration, Review, Section, Tour |
| 11 | +from .models import Artifact, Audit, Exhibit, Movie, Restoration, Review, Section, Tour |
12 | 12 |
|
13 | 13 |
|
14 | 14 | class MethodTests(SimpleTestCase): |
@@ -116,6 +116,7 @@ def setUpTestData(cls): |
116 | 116 | ], |
117 | 117 | ) |
118 | 118 | ], |
| 119 | + main_section=Section(section_number=2), |
119 | 120 | ) |
120 | 121 | cls.lost_empires = Exhibit.objects.create( |
121 | 122 | exhibit_name="Lost Empires", |
@@ -146,6 +147,9 @@ def setUpTestData(cls): |
146 | 147 | cls.egypt_tour = Tour.objects.create(guide="Amira", exhibit=cls.egypt) |
147 | 148 | cls.wonders_tour = Tour.objects.create(guide="Carlos", exhibit=cls.wonders) |
148 | 149 | cls.lost_tour = Tour.objects.create(guide="Yelena", exhibit=cls.lost_empires) |
| 150 | + cls.audit_1 = Audit.objects.create(related_section_number=1, reviewed=True) |
| 151 | + cls.audit_2 = Audit.objects.create(related_section_number=2, reviewed=True) |
| 152 | + cls.audit_3 = Audit.objects.create(related_section_number=5, reviewed=False) |
149 | 153 |
|
150 | 154 | def test_exact(self): |
151 | 155 | self.assertCountEqual( |
@@ -284,6 +288,28 @@ def test_foreign_field_with_slice(self): |
284 | 288 | qs = Tour.objects.filter(exhibit__sections__0_2__section_number__in=[1, 2]) |
285 | 289 | self.assertCountEqual(qs, [self.wonders_tour, self.egypt_tour]) |
286 | 290 |
|
| 291 | + def test_subquery_section_number_lt(self): |
| 292 | + subq = Audit.objects.filter( |
| 293 | + related_section_number__in=models.OuterRef("sections__section_number") |
| 294 | + ).values("related_section_number")[:1] |
| 295 | + self.assertCountEqual( |
| 296 | + Exhibit.objects.filter(sections__section_number=subq), |
| 297 | + [self.egypt, self.wonders, self.new_descoveries], |
| 298 | + ) |
| 299 | + |
| 300 | + def test_check_in_subquery(self): |
| 301 | + subquery = Audit.objects.filter(reviewed=True).values_list( |
| 302 | + "related_section_number", flat=True |
| 303 | + ) |
| 304 | + result = Exhibit.objects.filter(sections__section_number__in=subquery) |
| 305 | + self.assertCountEqual(result, [self.wonders, self.egypt, self.new_descoveries]) |
| 306 | + |
| 307 | + def test_array_as_rhs(self): |
| 308 | + result = Exhibit.objects.filter( |
| 309 | + main_section__section_number__in=models.F("sections__section_number") |
| 310 | + ) |
| 311 | + self.assertCountEqual(result, [self.new_descoveries]) |
| 312 | + |
287 | 313 |
|
288 | 314 | @isolate_apps("model_fields_") |
289 | 315 | class CheckTests(SimpleTestCase): |
|
0 commit comments