from rest_framework import serializers from ..models.SemiAutoCorrection import SemiAutoCorrection def default_json_fields(): return {"invoice_no": None, "imei_number": None, "retailername": None, "purchase_date": None, "sold_to_party": None} class SemiAutoCorrectionSerializer(serializers.ModelSerializer): class Meta: model = SemiAutoCorrection fields = '__all__' def to_internal_value(self, data): """ Customize the deserialization process for the JSONField fields. """ internal_value = super().to_internal_value(data) # Update the JSONField fields internal_value['feedback_result'] = self.update_json_field(data.get('feedback_result')) internal_value['reviewed_result'] = self.update_json_field(data.get('reviewed_result')) internal_value['predict_result'] = self.update_json_field(data.get('predict_result')) internal_value['reviewed_accuracy'] = self.update_json_field(data.get('reviewed_accuracy')) internal_value['feedback_accuracy'] = self.update_json_field(data.get('feedback_accuracy')) internal_value['reviewed_accuracy'] = self.update_json_field(data.get('reviewed_accuracy')) return internal_value def update_json_field(self, value): """ Helper method to update the JSONField value. """ if value is None or value == "": return default_json_fields() else: _value = default_json_fields() _value.update(value) return _value class SemiAutoCorrectionScanSerializer(serializers.ModelSerializer): start_date = serializers.DateTimeField() end_date = serializers.DateTimeField() class Meta: model = SemiAutoCorrection fields = ["id", "start_date", "end_date"]