#36398: select_for_update(of=...) ignores "self" when using values_list() when not
selecting a column from the model
-------------------------------------+-------------------------------------
Reporter: OutOfFocus4 | Owner: (none)
Type: Bug | Status: new
Component: Database layer | Version: dev
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Sarah Boyce):
* resolution: needsinfo =>
* stage: Unreviewed => Accepted
* status: closed => new
* type: Uncategorized => Bug
* version: 5.2 => dev
Comment:
Thank you, replicated
That this is a m2m field is important I believe
Possible test:
{{{#!diff
--- a/tests/select_for_update/models.py
+++ b/tests/select_for_update/models.py
@@ -41,6 +41,7 @@ class Person(models.Model):
name = models.CharField(max_length=30)
born = models.ForeignKey(City, models.CASCADE, related_name="+")
died = models.ForeignKey(City, models.CASCADE, related_name="+")
+ lived = models.ManyToManyField(City, related_name="people_set")
class PersonProfile(models.Model):
diff --git a/tests/select_for_update/tests.py
b/tests/select_for_update/tests.py
index 1bc87113ba..49453240c5 100644
--- a/tests/select_for_update/tests.py
+++ b/tests/select_for_update/tests.py
@@ -278,6 +278,18 @@ class SelectForUpdateTests(TransactionTestCase):
)
self.assertEqual(values, [(
self.person.pk,)])
+ @skipUnlessDBFeature("has_select_for_update_of")
+ def test_for_update_of_followed_by_values_list_of_m2m_field(self):
+ self.person.lived.add(self.city1)
+ self.person.lived.add(self.city2)
+
+ with transaction.atomic():
+ values = list(
+ Person.objects.select_for_update(of=("self",))
+ .values_list("lived__name", flat=True)
+ )
+ self.assertEqual(values, [
self.city1.name,
self.city2.name])
+
@skipUnlessDBFeature("has_select_for_update_of")
def test_for_update_of_self_when_self_is_not_selected(self):
}}}
--
Ticket URL: <
https://code.djangoproject.com/ticket/36398#comment:3>