1
0
mirror of https://github.com/django/django.git synced 2025-10-29 00:26:07 +00:00

Fixed #31863 -- Prevented mutating model state by copies of model instances.

Regression in bfb746f983.
This commit is contained in:
Gert Burger
2020-08-07 10:02:29 +02:00
committed by Mariusz Felisiak
parent 63300f7e68
commit 94ea79be13
2 changed files with 19 additions and 1 deletions

View File

@@ -1,3 +1,4 @@
import copy
import datetime
from operator import attrgetter
@@ -256,3 +257,17 @@ class EvaluateMethodTest(TestCase):
dept = Department.objects.create(pk=1, name='abc')
dept.evaluate = 'abc'
Worker.objects.filter(department=dept)
class ModelFieldsCacheTest(TestCase):
def test_fields_cache_reset_on_copy(self):
department1 = Department.objects.create(id=1, name='department1')
department2 = Department.objects.create(id=2, name='department2')
worker1 = Worker.objects.create(name='worker', department=department1)
worker2 = copy.copy(worker1)
self.assertEqual(worker2.department, department1)
# Changing related fields doesn't mutate the base object.
worker2.department = department2
self.assertEqual(worker2.department, department2)
self.assertEqual(worker1.department, department1)