[3.0.x] Fixed #30839 -- Fixed Field.__deepcopy__() so forms don't share error messages.
Backport of a28d1b38e5
from master
This commit is contained in:
parent
282138a7bb
commit
7c70aa8f63
|
@ -201,6 +201,7 @@ class Field:
|
||||||
result = copy.copy(self)
|
result = copy.copy(self)
|
||||||
memo[id(self)] = result
|
memo[id(self)] = result
|
||||||
result.widget = copy.deepcopy(self.widget, memo)
|
result.widget = copy.deepcopy(self.widget, memo)
|
||||||
|
result.error_messages = self.error_messages.copy()
|
||||||
result.validators = self.validators[:]
|
result.validators = self.validators[:]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
|
@ -3685,6 +3685,17 @@ Good luck picking a username that doesn't already exist.</p>
|
||||||
self.assertIsInstance(p.data, MultiValueDict)
|
self.assertIsInstance(p.data, MultiValueDict)
|
||||||
self.assertIsInstance(p.files, MultiValueDict)
|
self.assertIsInstance(p.files, MultiValueDict)
|
||||||
|
|
||||||
|
def test_field_deep_copy_error_messages(self):
|
||||||
|
class CustomCharField(CharField):
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
kwargs['error_messages'] = {'invalid': 'Form custom error message.'}
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
|
field = CustomCharField()
|
||||||
|
field_copy = copy.deepcopy(field)
|
||||||
|
self.assertIsInstance(field_copy, CustomCharField)
|
||||||
|
self.assertIsNot(field_copy.error_messages, field.error_messages)
|
||||||
|
|
||||||
|
|
||||||
class CustomRenderer(DjangoTemplates):
|
class CustomRenderer(DjangoTemplates):
|
||||||
pass
|
pass
|
||||||
|
|
Loading…
Reference in New Issue