from rest_framework import serializers
class UserProfileSerializer(serializers.ModelSerializer):
"""Serializes data for User."""
url = serializers.URLField(source='profile_url')
def profile_url(self):
"""Return user profile endpoint."""
return reverse('user:profile_view', kwargs=self.context.get('id', None))
class Meta:
model = User
fields = ('id', 'url')
如何在profile_url
内访问User.id? id
中似乎没有任何context
参数,或者至少我认为我没有正确访问。
答案 0 :(得分:2)
实际上,您可能希望将序列化程序中的字段更改为:
url = serializers.SerializerMethodField('profile_url')
这将为方法profile_url提供一个额外的参数,即被序列化的对象。所以在你的情况下,这变成了:
def profile_url(self, obj):
"""Return user profile endpoint."""
return reverse('user:profile_view', args=[obj.id,])