Calculating serializers read only fields
Here is an example:
# models.py
class MyModel(models.Model):
...
metadata = models.JSONField()
# serializers.py
class MetadataSerializer(serializers.Serializer):
x = serializers.IntegerField()
y = serializers.IntegerField(read_only=True)
# views.py
class MyAPIView(APIView):
def post(self, request):
serializer = MetadataSerializer(data=request.data)
serializer.is_valid()
create_mymodel(metadata=serializer.validated_data)
return Response(status=201)
I would like to calculate y
based on x
using "complex" business logic y = const * x
and save result to json field.
Q: Where should i place this business logic?
- before serializer init, intercepting immutable
request.data
- inside serializer
validate()
orvalidate_y()
method. - using
get_y()
ofSerializerMethodField
. - inside
create_mymodel()
service.