|
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