|
10 | 10 |
|
11 | 11 | from .models import ( |
12 | 12 | ArtifactDetail, |
| 13 | + ExhibitAudit, |
13 | 14 | ExhibitSection, |
14 | 15 | Movie, |
15 | 16 | MuseumExhibit, |
@@ -124,6 +125,7 @@ def setUpTestData(cls): |
124 | 125 | ], |
125 | 126 | ) |
126 | 127 | ], |
| 128 | + main_section=ExhibitSection(section_number=2), |
127 | 129 | ) |
128 | 130 | cls.lost_empires = MuseumExhibit.objects.create( |
129 | 131 | exhibit_name="Lost Empires", |
@@ -154,6 +156,9 @@ def setUpTestData(cls): |
154 | 156 | cls.egypt_tour = Tour.objects.create(guide="Amira", exhibit=cls.egypt) |
155 | 157 | cls.wonders_tour = Tour.objects.create(guide="Carlos", exhibit=cls.wonders) |
156 | 158 | cls.lost_tour = Tour.objects.create(guide="Yelena", exhibit=cls.lost_empires) |
| 159 | + cls.audit_1 = ExhibitAudit.objects.create(related_section_number=1, reviewed=True) |
| 160 | + cls.audit_2 = ExhibitAudit.objects.create(related_section_number=2, reviewed=True) |
| 161 | + cls.audit_3 = ExhibitAudit.objects.create(related_section_number=5, reviewed=False) |
157 | 162 |
|
158 | 163 | def test_filter_with_field(self): |
159 | 164 | self.assertCountEqual( |
@@ -309,6 +314,35 @@ def test_foreign_field_with_slice(self): |
309 | 314 | qs = Tour.objects.filter(exhibit__sections__0_2__section_number__all=[1, 2]) |
310 | 315 | self.assertEqual(list(qs), [self.wonders_tour]) |
311 | 316 |
|
| 317 | + def test_subquery_section_number_lt(self): |
| 318 | + subq = ExhibitAudit.objects.filter( |
| 319 | + related_section_number__in=models.OuterRef("sections__section_number") |
| 320 | + ).values("related_section_number")[:1] |
| 321 | + self.assertCountEqual( |
| 322 | + MuseumExhibit.objects.filter(sections__section_number=subq), |
| 323 | + [self.egypt, self.wonders, self.new_descoveries], |
| 324 | + ) |
| 325 | + |
| 326 | + def test_check_all_subquery(self): |
| 327 | + subquery = ExhibitAudit.objects.filter(reviewed=True).values_list( |
| 328 | + "related_section_number", flat=True |
| 329 | + ) |
| 330 | + result = MuseumExhibit.objects.filter(sections__section_number__all=subquery) |
| 331 | + self.assertCountEqual(result, [self.wonders]) |
| 332 | + |
| 333 | + def test_check_in_subquery(self): |
| 334 | + subquery = ExhibitAudit.objects.filter(reviewed=True).values_list( |
| 335 | + "related_section_number", flat=True |
| 336 | + ) |
| 337 | + result = MuseumExhibit.objects.filter(sections__section_number__in=subquery) |
| 338 | + self.assertCountEqual(result, [self.wonders, self.egypt, self.new_descoveries]) |
| 339 | + |
| 340 | + def test_array_as_rhs(self): |
| 341 | + result = MuseumExhibit.objects.filter( |
| 342 | + main_section__section_number__in=models.F("sections__section_number") |
| 343 | + ) |
| 344 | + self.assertCountEqual(result, [self.new_descoveries]) |
| 345 | + |
312 | 346 |
|
313 | 347 | @isolate_apps("model_fields_") |
314 | 348 | class CheckTests(SimpleTestCase): |
|
0 commit comments