@@ -86,15 +86,23 @@ def __init__(self, required=True, default=None, label=None, validators=None, err
86
86
self .default = default
87
87
self .required = bool (required ) if self .default is None else False
88
88
# Added validator for check on required field.
89
+ self ._src_validators = validators
89
90
self ._validators = ([RequiredValidator ()] if self .required else []) + (validators or [])[:]
90
91
91
92
# Make errors dict.
92
93
messages = {}
94
+ self ._src_messages = messages
93
95
for cls in reversed (self .__class__ .__mro__ ):
94
96
messages .update (getattr (cls , 'default_error_messages' , {}))
95
97
messages .update (error_messages or {})
96
98
self .error_messages = messages
97
99
100
+ def __deepcopy__ (self , memo = {}):
101
+ return self .__class__ (
102
+ required = self .required , default = self .default , label = self .label ,
103
+ validators = self ._src_validators , error_messages = self ._src_messages
104
+ )
105
+
98
106
def bind (self , field_name , parent ):
99
107
"""
100
108
Initialization field name and parent instance .
@@ -378,6 +386,14 @@ def __init__(self, min_length=None, max_length=None, trim_whitespace=False, allo
378
386
message = self .error_messages ['min_length' ].format (min_length = self .min_length )
379
387
self .validators .append (MinLengthValidator (self .min_length , message = message ))
380
388
389
+ def __deepcopy__ (self , memo = {}):
390
+ return self .__class__ (
391
+ required = self .required , default = self .default , label = self .label ,
392
+ validators = self ._src_validators , error_messages = self ._src_messages ,
393
+ min_length = self .min_length , max_length = self .max_length ,
394
+ trim_whitespace = self .trim_whitespace , allow_blank = self .allow_blank
395
+ )
396
+
381
397
def run_validation (self , data = None ):
382
398
"""
383
399
We check for an empty string here, so that it does not fall into subclasses in `.to_internal_value ()`.
@@ -458,6 +474,13 @@ def __init__(self, min_value=None, max_value=None, *args, **kwargs):
458
474
message = self .error_messages ['max_value' ].format (max_value = self .max_value )
459
475
self .validators .append (MaxValueValidator (self .max_value , message = message ))
460
476
477
+ def __deepcopy__ (self , memo = {}):
478
+ return self .__class__ (
479
+ required = self .required , default = self .default , label = self .label ,
480
+ validators = self ._src_validators , error_messages = self ._src_messages ,
481
+ min_value = self .min_value , max_value = self .max_value
482
+ )
483
+
461
484
def to_internal_value (self , data ):
462
485
"""
463
486
Data transformation to python object.
@@ -526,6 +549,13 @@ def __init__(self, min_value=None, max_value=None, *args, **kwargs):
526
549
message = self .error_messages ['max_value' ].format (max_value = self .max_value )
527
550
self .validators .append (MaxValueValidator (self .max_value , message = message ))
528
551
552
+ def __deepcopy__ (self , memo = {}):
553
+ return self .__class__ (
554
+ required = self .required , default = self .default , label = self .label ,
555
+ validators = self ._src_validators , error_messages = self ._src_messages ,
556
+ min_value = self .min_value , max_value = self .max_value
557
+ )
558
+
529
559
def to_internal_value (self , data ):
530
560
"""
531
561
Data transformation to python object.
@@ -713,6 +743,14 @@ def __init__(self, child=None, min_length=None, max_length=None, allow_empty=Fal
713
743
message = self .error_messages ['min_length' ].format (min_length = self .min_length )
714
744
self .validators .append (MinLengthValidator (self .min_length , message = message ))
715
745
746
+ def __deepcopy__ (self , memo = {}):
747
+ return self .__class__ (
748
+ required = self .required , default = self .default , label = self .label ,
749
+ validators = self ._src_validators , error_messages = self ._src_messages ,
750
+ child = self .child , min_length = self .min_length , max_length = self .max_length ,
751
+ allow_empty = self .allow_empty
752
+ )
753
+
716
754
def to_internal_value (self , data ):
717
755
"""
718
756
Data transformation to python list object.
@@ -776,6 +814,13 @@ def __init__(self, format=None, input_format=None, *args, **kwargs):
776
814
self .input_format = input_format
777
815
super ().__init__ (* args , ** kwargs )
778
816
817
+ def __deepcopy__ (self , memo = {}):
818
+ return self .__class__ (
819
+ required = self .required , default = self .default , label = self .label ,
820
+ validators = self ._src_validators , error_messages = self ._src_messages ,
821
+ format = getattr (self , 'format' ), input_format = getattr (self , 'input_format' )
822
+ )
823
+
779
824
def to_internal_value (self , data ):
780
825
"""
781
826
Data transformation to python datetime object.
@@ -868,6 +913,13 @@ def __init__(self, format=None, input_format=None, *args, **kwargs):
868
913
self .input_format = input_format
869
914
super ().__init__ (* args , ** kwargs )
870
915
916
+ def __deepcopy__ (self , memo = {}):
917
+ return self .__class__ (
918
+ required = self .required , default = self .default , label = self .label ,
919
+ validators = self ._src_validators , error_messages = self ._src_messages ,
920
+ format = getattr (self , 'format' , None ), input_format = getattr (self , 'input_format' )
921
+ )
922
+
871
923
def to_internal_value (self , data ):
872
924
"""
873
925
Data transformation to python datetime object.
@@ -958,6 +1010,13 @@ def __init__(self, format=None, input_format=None, *args, **kwargs):
958
1010
959
1011
super (DateTimeField , self ).__init__ (* args , ** kwargs )
960
1012
1013
+ def __deepcopy__ (self , memo = {}):
1014
+ return self .__class__ (
1015
+ required = self .required , default = self .default , label = self .label ,
1016
+ validators = self ._src_validators , error_messages = self ._src_messages ,
1017
+ format = getattr (self , 'format' ), input_format = getattr (self , 'input_format' )
1018
+ )
1019
+
961
1020
def to_internal_value (self , data ):
962
1021
"""
963
1022
Data transformation to python datetime object.
@@ -1083,6 +1142,13 @@ def __init__(self, child=None, *args, **kwargs):
1083
1142
1084
1143
self .child .bind (field_name = '' , parent = self ) # Bind child field.
1085
1144
1145
+ def __deepcopy__ (self , memo = {}):
1146
+ return self .__class__ (
1147
+ required = self .required , default = self .default , label = self .label ,
1148
+ validators = self ._src_validators , error_messages = self ._src_messages ,
1149
+ child = self .child
1150
+ )
1151
+
1086
1152
def to_internal_value (self , data ):
1087
1153
"""
1088
1154
Data transformation to python JSON object.
@@ -1161,6 +1227,13 @@ def __init__(self, method_name_get=None, method_name_pop=None, *args, **kwargs)
1161
1227
self .method_name_get = method_name_get
1162
1228
self .method_name_pop = method_name_pop
1163
1229
1230
+ def __deepcopy__ (self , memo = {}):
1231
+ return self .__class__ (
1232
+ required = self .required , default = self .default , label = self .label ,
1233
+ validators = self ._src_validators , error_messages = self ._src_messages ,
1234
+ method_name_get = self .method_name_get , method_name_pop = self .method_name_pop
1235
+ )
1236
+
1164
1237
def bind (self , field_name , parent ):
1165
1238
"""
1166
1239
Initialization field name and parent instance .
0 commit comments