diff options
| author | David Wobrock <david.wobrock@gmail.com> | 2022-06-17 09:19:49 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-06-17 10:06:12 +0200 |
| commit | f4680a112d01d85540411673eade31f37712d0a6 (patch) | |
| tree | 59f39adfa757bdff34e9506476d455aa1a59f796 | |
| parent | e286ce17ff8bf72a248ce3177bbd5163c50a6ded (diff) | |
| download | django-f4680a112d01d85540411673eade31f37712d0a6.tar.gz | |
Refs #28897 -- Added test for QuerySet.update() on querysets ordered by inline m2m annotation.
| -rw-r--r-- | django/db/backends/mysql/features.py | 5 | ||||
| -rw-r--r-- | tests/update/models.py | 1 | ||||
| -rw-r--r-- | tests/update/tests.py | 7 |
3 files changed, 13 insertions, 0 deletions
diff --git a/django/db/backends/mysql/features.py b/django/db/backends/mysql/features.py index 3ea3deeae3..9f66a01e74 100644 --- a/django/db/backends/mysql/features.py +++ b/django/db/backends/mysql/features.py @@ -109,6 +109,11 @@ class DatabaseFeatures(BaseDatabaseFeatures): "scalar value but it's not implemented (#25287).": { "expressions.tests.FTimeDeltaTests.test_durationfield_multiply_divide", }, + "UPDATE ... ORDER BY syntax on MySQL/MariaDB does not support ordering by" + "related fields.": { + "update.tests.AdvancedTests." + "test_update_ordered_by_inline_m2m_annotation", + }, } if "ONLY_FULL_GROUP_BY" in self.connection.sql_mode: skips.update( diff --git a/tests/update/models.py b/tests/update/models.py index 3993763eca..d7452dc302 100644 --- a/tests/update/models.py +++ b/tests/update/models.py @@ -41,6 +41,7 @@ class Foo(models.Model): class Bar(models.Model): foo = models.ForeignKey(Foo, models.CASCADE, to_field="target") m2m_foo = models.ManyToManyField(Foo, related_name="m2m_foo") + x = models.IntegerField(default=0) class UniqueNumber(models.Model): diff --git a/tests/update/tests.py b/tests/update/tests.py index 15a657fab0..0c3a399514 100644 --- a/tests/update/tests.py +++ b/tests/update/tests.py @@ -225,6 +225,13 @@ class AdvancedTests(TestCase): new_name=annotation, ).update(name=F("new_name")) + def test_update_ordered_by_inline_m2m_annotation(self): + foo = Foo.objects.create(target="test") + Bar.objects.create(foo=foo) + + Bar.objects.order_by(Abs("m2m_foo")).update(x=2) + self.assertEqual(Bar.objects.get().x, 2) + @unittest.skipUnless( connection.vendor == "mysql", |
