@@ -44,51 +44,6 @@ class Meta:
4444 )
4545
4646
47- def _model_to_jsonable_dict (instance : models .Model , new_data : dict ) -> dict [str , str | None ]:
48- """모델 인스턴스를 JSON 직렬화 가능한 딕셔너리로 변환합니다."""
49- if not instance :
50- return {}
51-
52- data : dict [str , str | None ] = {}
53- for field , value in new_data .items ():
54- if not hasattr (instance , field ):
55- continue
56-
57- if isinstance (value , list ):
58- sub_data = []
59-
60- for sub_value in value :
61- # One to Many case
62- if not isinstance (sub_value , dict ) or "id" not in sub_value :
63- continue
64- sub_qs = getattr (instance , field , None )
65- if not isinstance (sub_qs , models .manager .BaseManager ):
66- continue
67- if not (sub_instance := sub_qs .filter (pk = sub_value ["id" ]).first ()):
68- continue
69-
70- sub_data .append (_model_to_jsonable_dict (sub_instance , sub_value ))
71-
72- if sub_data :
73- data [field ] = sub_data
74-
75- elif isinstance (value , dict ):
76- # One to One case
77- if not (sub_instance := getattr (instance , field , None )):
78- continue
79-
80- data [field ] = _model_to_jsonable_dict (sub_instance , value )
81-
82- elif getattr (instance , field ) != value :
83- if isinstance (value , models .Model ):
84- field = f"{ getattr (instance ._meta .model , field ).field .name } _id"
85- value = str (value .pk )
86-
87- data [field ] = value
88-
89- return data
90-
91-
9247class ModificationAuditCreationPortalSerializer (serializers .ModelSerializer ):
9348 has_requested_modification_audit = serializers .SerializerMethodField ()
9449 requested_modification_audit_id = serializers .SerializerMethodField ()
0 commit comments