我有一个使用Django REST Framework和Django-allauth的Django应用程序。现在,我试图检索社交帐户中存在的头像网址。但是,我在编写串行器时遇到了麻烦。
有关背景信息,allauth
' s SocialAccount
通过外键与用户模型相关:
class SocialAccount(models.Model):
user = models.ForeignKey(allauth.app_settings.USER_MODEL)
# the method I'm interested of
def get_avatar_url(self):
...
现在,这是我目前拥有的序列化程序:
class ProfileInfoSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'first_name', 'last_name')
最后,我希望有一个额外的字段avatar_url
,它会在SocialAccount
模型中获取方法调用的结果。我该怎么做?
答案 0 :(得分:3)
我找到了使用SerializerMethodField
的解决方案:
class ProfileInfoSerializer(serializers.ModelSerializer):
avatar_url = serializers.SerializerMethodField()
def get_avatar_url(obj, self):
return obj.socialaccount_set.first().get_avatar_id()
class Meta:
model = User
fields = ('id', 'first_name', 'last_name', 'avatar_url')