Refs #28897 -- Added test for QuerySet.update() on querysets ordered by inline m2m annotation.
This commit is contained in:
parent
e286ce17ff
commit
f4680a112d
|
@ -109,6 +109,11 @@ class DatabaseFeatures(BaseDatabaseFeatures):
|
||||||
"scalar value but it's not implemented (#25287).": {
|
"scalar value but it's not implemented (#25287).": {
|
||||||
"expressions.tests.FTimeDeltaTests.test_durationfield_multiply_divide",
|
"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:
|
if "ONLY_FULL_GROUP_BY" in self.connection.sql_mode:
|
||||||
skips.update(
|
skips.update(
|
||||||
|
|
|
@ -41,6 +41,7 @@ class Foo(models.Model):
|
||||||
class Bar(models.Model):
|
class Bar(models.Model):
|
||||||
foo = models.ForeignKey(Foo, models.CASCADE, to_field="target")
|
foo = models.ForeignKey(Foo, models.CASCADE, to_field="target")
|
||||||
m2m_foo = models.ManyToManyField(Foo, related_name="m2m_foo")
|
m2m_foo = models.ManyToManyField(Foo, related_name="m2m_foo")
|
||||||
|
x = models.IntegerField(default=0)
|
||||||
|
|
||||||
|
|
||||||
class UniqueNumber(models.Model):
|
class UniqueNumber(models.Model):
|
||||||
|
|
|
@ -225,6 +225,13 @@ class AdvancedTests(TestCase):
|
||||||
new_name=annotation,
|
new_name=annotation,
|
||||||
).update(name=F("new_name"))
|
).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(
|
@unittest.skipUnless(
|
||||||
connection.vendor == "mysql",
|
connection.vendor == "mysql",
|
||||||
|
|
Loading…
Reference in New Issue