@@ -23,38 +23,54 @@ class Meta:
2323
2424 @property
2525 def mapping (self ) -> dict [str , dict [str , Any ]]:
26- mapping = getattr (self , "_mapping" , None )
27- if mapping is None :
28- raise ValueError ("Mapping must be set" )
29- return mapping
26+ if getattr (self , "_mapping" ) is None :
27+ raise ValueError (
28+ "Property 'mapping' on instance must be set and can't be 'None'"
29+ )
30+ return self ._mapping
31+
32+ @mapping .setter
33+ def mapping (self , value : dict [str , dict [str , Any ]]) -> None :
34+ self ._mapping = value
3035
3136 @property
3237 def mapping_fields (self ) -> list [str ]:
3338 mapping_fields = getattr (
3439 self , "_mapping_fields" , list (self .model_mapping .values ())
3540 )
3641 if mapping_fields is None :
37- raise ValueError ("Mapping fields must be set" )
42+ raise ValueError ("Property 'mapping_fields' must be set and can't be 'None " )
3843 return mapping_fields
3944
45+ @mapping_fields .setter
46+ def mapping_fields (self , value : list [str ]) -> None :
47+ self ._mapping_fields = value
48+
4049 @property
4150 def model_mapping (self ) -> dict [str , Any ]:
42- mapping = getattr (self , "mapping" , None )
43- if mapping is None :
44- raise ValueError ("Mapping must be set" )
45- for key_path in mapping .keys ():
51+ for key_path in self .mapping .keys ():
4652 key = key_path .split (self .relation_separator )[- 1 ]
4753 if key .lower () == self .model .__name__ .lower ():
48- return mapping .get (key_path , {})
54+ return self . mapping .get (key_path , {})
4955 return {}
5056
57+ @model_mapping .setter
58+ def model_mapping (self , value : dict [str , Any ]) -> None :
59+ self ._model_mapping = value
60+
5161 @property
5262 def model (self ) -> models .Model :
5363 model = getattr (self , "_model" , self .Meta .model )
5464 if model is None :
55- raise ValueError ("Mapping must be set" )
65+ raise ValueError (
66+ "Property 'model' must be set and can't be 'None. Default is 'Meta.model"
67+ )
5668 return model
5769
70+ @model .setter
71+ def model (self , value : models .Model ) -> None :
72+ self ._model = value
73+
5874
5975class BaseMappingSerializer (CustomFieldBaseModelSerializer , PropertySerializer ):
6076 serializer_related_field = UUIDRelatedField
@@ -188,8 +204,8 @@ def __init__(
188204 ** kwargs : Any ,
189205 ) -> None :
190206 self .exclude = exclude
191- self ._mapping_fields = nested_fields
192- self ._mapping = parent_mapping
207+ self .mapping_fields = nested_fields
208+ self .mapping = parent_mapping
193209 self .Meta .model = field .related_model
194210 super ().__init__ (* args , ** kwargs )
195211
@@ -256,8 +272,8 @@ def map_data(self, initial_data: Any) -> Any:
256272class ListDataMappingSerializer (serializers .ListSerializer , DataMappingSerializer ):
257273 def __init__ (self , data : Any = empty , * args : Any , ** kwargs : Any ) -> None :
258274 self .instance = None
259- self ._mapping = kwargs .pop ("mapping" , {})
260- self ._model = kwargs .pop ("model" , None )
275+ self .mapping = kwargs .pop ("mapping" , {})
276+ self .model = kwargs .pop ("model" )
261277 self .unmapped_data = data if data is not empty else []
262278 mapped_data = self .map_list_data (self .unmapped_data )
263279 super ().__init__ (data = mapped_data , * args , ** kwargs )
0 commit comments