Loading django/db/models/expressions.py +5 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,11 @@ class F(ExpressionNode): super(F, self).__init__(None, None, False) self.name = name def __deepcopy__(self, memodict): obj = super(F, self).__deepcopy__(memodict) obj.name = self.name return obj def prepare(self, evaluator, query, allow_joins): return evaluator.prepare_leaf(self, query, allow_joins) Loading tests/expressions/tests.py +9 −0 Original line number Diff line number Diff line from __future__ import unicode_literals from copy import deepcopy import datetime from django.core.exceptions import FieldError Loading Loading @@ -287,6 +288,14 @@ class ExpressionsTests(TestCase): ) self.assertEqual(str(qs.query).count('JOIN'), 2) def test_F_object_deepcopy(self): """ Make sure F objects can be deepcopied (#23492) """ f = F("foo") g = deepcopy(f) self.assertEqual(f.name, g.name) class ExpressionsNumericTests(TestCase): Loading Loading
django/db/models/expressions.py +5 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,11 @@ class F(ExpressionNode): super(F, self).__init__(None, None, False) self.name = name def __deepcopy__(self, memodict): obj = super(F, self).__deepcopy__(memodict) obj.name = self.name return obj def prepare(self, evaluator, query, allow_joins): return evaluator.prepare_leaf(self, query, allow_joins) Loading
tests/expressions/tests.py +9 −0 Original line number Diff line number Diff line from __future__ import unicode_literals from copy import deepcopy import datetime from django.core.exceptions import FieldError Loading Loading @@ -287,6 +288,14 @@ class ExpressionsTests(TestCase): ) self.assertEqual(str(qs.query).count('JOIN'), 2) def test_F_object_deepcopy(self): """ Make sure F objects can be deepcopied (#23492) """ f = F("foo") g = deepcopy(f) self.assertEqual(f.name, g.name) class ExpressionsNumericTests(TestCase): Loading