Browse Source

Refs #30129 -- Added test for create() with F() expression in Subquery.

Fixed in 35431298226165986ad07e91f9d3aca721ff38ec.
sarahboyce 2 years ago
parent
commit
05bcd5baaf
1 changed files with 18 additions and 0 deletions
  1. 18 0
      tests/expressions/tests.py

+ 18 - 0
tests/expressions/tests.py

@@ -776,6 +776,24 @@ class BasicExpressionsTests(TestCase):
         # contain nested aggregates.
         self.assertNotIn("GROUP BY", sql)
 
+    def test_object_create_with_f_expression_in_subquery(self):
+        Company.objects.create(
+            name="Big company", num_employees=100000, num_chairs=1, ceo=self.max
+        )
+        biggest_company = Company.objects.create(
+            name="Biggest company",
+            num_chairs=1,
+            ceo=self.max,
+            num_employees=Subquery(
+                Company.objects.order_by("-num_employees")
+                .annotate(max_num_employees=Max("num_employees"))
+                .annotate(new_num_employees=F("max_num_employees") + 1)
+                .values("new_num_employees")[:1]
+            ),
+        )
+        biggest_company.refresh_from_db()
+        self.assertEqual(biggest_company.num_employees, 100001)
+
     @skipUnlessDBFeature("supports_over_clause")
     def test_aggregate_rawsql_annotation(self):
         with self.assertNumQueries(1) as ctx: