PolymorphicModelSerializer does not implement get_root_meta() to populate the meta key of the response JSON.
This might be by design, but it took me some time to figure this out and implement this method to delegate to the appropriate serializer. I implemented get_root_meta() on the serializer that is extending PolymorphicModelSerializer in a similar way to get_fields().
The code:
class MySerializer(serializers.PolymorphicModelSerializer):
def get_root_meta(self, resource, many):
if self.instance not in (None, []):
if not isinstance(self.instance, QuerySet):
serializer_class = self.get_polymorphic_serializer_for_instance(self.instance)
return serializer_class(self.instance, context=self.context).get_root_meta(resource, many)
else:
raise Exception("Cannot get metadata from a polymorphic serializer given a queryset")
return {}
Not sure if this would be the way to imlpement it on PolymorphicModelSerializer, but it works for me.
I think it would be nice if this is provided by default, or the documentation mentions that you need to implement it yourself when using PolymorphicModelSerializer.
p.s. First time posting an issue, so let me know if something is not clear or I missed something.
PolymorphicModelSerializerdoes not implementget_root_meta()to populate themetakey of the response JSON.This might be by design, but it took me some time to figure this out and implement this method to delegate to the appropriate serializer. I implemented
get_root_meta()on the serializer that is extendingPolymorphicModelSerializerin a similar way toget_fields().The code:
Not sure if this would be the way to imlpement it on
PolymorphicModelSerializer, but it works for me.I think it would be nice if this is provided by default, or the documentation mentions that you need to implement it yourself when using
PolymorphicModelSerializer.p.s. First time posting an issue, so let me know if something is not clear or I missed something.