Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #10399 -- Tested that o2o field updates are not constrained by …

…an inner query.
  • Loading branch information...
commit fb3d85bd14f1f7a8969ef8c54f2f0603e161f428 1 parent 952ba52
@charettes charettes authored
Showing with 25 additions and 1 deletion.
  1. +25 −1 tests/model_inheritance/tests.py
View
26 tests/model_inheritance/tests.py
@@ -1,9 +1,11 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from operator import attrgetter
from django.core.exceptions import FieldError
+from django.db import connection
from django.test import TestCase
+from django.test.testcases import CaptureQueriesContext
from django.utils import six
from .models import (Chef, CommonInfo, ItalianRestaurant, ParkingLot, Place,
@@ -294,3 +296,25 @@ def test_update_query_counts(self):
)
with self.assertNumQueries(6):
ir.save()
+
+ def test_update_parent_filtering(self):
+ """
+ Test that updating a field of a model subclass doesn't issue an UPDATE
+ query constrained by an inner query.
+ Refs #10399
+ """
+ supplier = Supplier.objects.create(
+ name='Central market',
+ address='610 some street'
+ )
+ # Capture the expected query in a database agnostic way
+ with CaptureQueriesContext(connection) as captured_queries:
+ Place.objects.filter(pk=supplier.pk).update(name=supplier.name)
+ expected_sql = captured_queries[0]['sql']
+ # Capture the queries executed when a subclassed model instance is saved.
+ with CaptureQueriesContext(connection) as captured_queries:
+ supplier.save(update_fields=('name',))
+ for query in captured_queries:
+ sql = query['sql']
+ if 'UPDATE' in sql:
+ self.assertEqual(expected_sql, sql)

0 comments on commit fb3d85b

Please sign in to comment.
Something went wrong with that request. Please try again.