[docs]classBlogSerializer(serializers.HyperlinkedModelSerializer):""" Complete representation for detail and writing usage. """id=serializers.ReadOnlyField()view_url=serializers.SerializerMethodField()article_count=serializers.SerializerMethodField()classMeta:model=Blogfields='__all__'extra_kwargs={"url":{"view_name":"djangoapp_sample:api-blog-detail"},}
[docs]defget_view_url(self,obj):""" Return the HTML detail view URL. If request has been given to serializer this will be an absolute URL, else a relative URL. """url=obj.get_absolute_url()request=self.context.get("request")ifrequest:returnrequest.build_absolute_uri(url)returnurl
[docs]defget_article_count(self,obj):""" Return count of related articles. """returnobj.article_set.count()
[docs]classBlogResumeSerializer(BlogSerializer):""" Simpler Blog representation for nested list. It won't be suitable for writing usage. """classMeta:model=BlogSerializer.Meta.modelfields=["id","url","view_url","title"]extra_kwargs=BlogSerializer.Meta.extra_kwargs