【问题标题】:Django allauth SocialAccount model's "extra_data" fieldDjango allauth SocialAccount 模型的“extra_data”字段
【发布时间】:2020-12-01 05:29:02
【问题描述】:

SocialAccount 模型在表中有 extra_data 字段。并且这个模型与 User 表有关系。当我检索 User 表时,尝试将 SocialAccount 添加到 User 但出现问题...

serializers.py

from rest_framework import serializers
from django.contrib.auth.models import User
from allauth.socialaccount.models import SocialAccount

更新

我更新了serializers.py,现在我可以实现将extra_data 添加到UserDisplaySerializer

class SocialAccountExtraDataSerializer(serializers.ModelSerializer):
  class Meta:
    model = SocialAccount
    fields = ["extra_data"]
    depth = 1


class UserDisplaySerializer(serializers.ModelSerializer):
  extra_data_set = serializers.SerializerMethodField()

  class Meta:
    model = User
    fields = ["username", "extra_data_set"]
    depth = 1

  def get_extra_data_set(self, instance):
    extra_data = instance.socialaccount_set.all()[0].extra_data
    return SocialAccountExtraDataSerializer(extra_data, many=True).data

但是这次extra_data 字段带有那些空对象。有六个像预期但空的对象?

我应该如何将SocialAccount的extra_data作为字段顺利插入User序列化程序...

【问题讨论】:

    标签: django django-rest-framework django-allauth


    【解决方案1】:

    我通过在返回之前不序列化数据解决了这个问题。

    def get_extra_data_set(self, instance):
        extra_data = instance.socialaccount_set.all()[0].extra_data
        # below serialize and return the data 
        return SocialAccountExtraDataSerializer(extra_data, many=True).data
    

    我只是直接return extra_field 而不是上面的。

    def get_extra_data(self, instance):
        if instance.is_superuser is not True:
            extra_data = instance.socialaccount_set.all()[0].extra_data
            return extra_data
    

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多