| 1967 | |
| 1968 | class JoinPromotionTests(TestCase): |
| 1969 | def test_ticket_21150(self): |
| 1970 | b = Bravo.objects.create() |
| 1971 | c = Charlie.objects.create(bravo=b) |
| 1972 | qs = Charlie.objects.select_related("alfa").annotate(Count("bravo__charlie")) |
| 1973 | self.assertSequenceEqual(qs, [c]) |
| 1974 | self.assertIs(qs[0].alfa, None) |
| 1975 | a = Alfa.objects.create() |
| 1976 | c.alfa = a |
| 1977 | c.save() |
| 1978 | # Force re-evaluation |
| 1979 | qs = qs.all() |
| 1980 | self.assertSequenceEqual(qs, [c]) |
| 1981 | self.assertEqual(qs[0].alfa, a) |
| 1982 | |
| 1983 | def test_existing_join_not_promoted(self): |
| 1984 | # No promotion for existing joins |