Python Django序列化程序未显示子模型字段

Python Django序列化程序未显示子模型字段,python,django,django-rest-framework,Python,Django,Django Rest Framework,在另一个序列化程序(外键关系)中使用模型序列化程序时,我的序列化程序没有从子模型返回字段,这是一个问题。我不是在寻找解决办法,而是在寻找它不起作用的原因 models.py class LinkedinAccount(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=100, blank=True) date_created = models.

在另一个序列化程序(外键关系)中使用模型序列化程序时,我的序列化程序没有从子模型返回字段,这是一个问题。我不是在寻找解决办法,而是在寻找它不起作用的原因

models.py

class LinkedinAccount(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100, blank=True)
    date_created = models.DateTimeField(auto_now_add=True)
    is_prospect = models.BooleanField(default=False)

class LinkedinProspectAccount(LinkedinAccount):
    title = models.CharField(max_length=255, blank=True)
    company = models.CharField(max_length=100, blank=True)
    country = models.CharField(max_length=255, blank=True)
    city = models.CharField(max_length=255, blank=True)
序列化程序.py

class LinkedinAccountSerializer(serializers.ModelSerializer):
    class Meta:
        model = user_account.models.LinkedinAccount
        fields = ('id', 'name')
        read_only_fields = ('date_created',)


class LinkedinProspectAccountSerializer(serializers.ModelSerializer):
    class Meta:
        model = user_account.models.LinkedinProspectAccount
        fields = ('title', 'company', 'country', 'city')
        read_only_fields = ('date_created',)


class ConversationSerializer(serializers.ModelSerializer):
    linkedin_account = user_account.serializers.LinkedinAccountSerializer()
    last_message = MessageSerializer()
    prospect = user_account.serializers.LinkedinProspectAccountSerializer()

    class Meta:
        model = conversation.models.Conversation
        fields = ('id', 'linkedin_account', 'prospect', 'conversation_id', 'archived',
                  'last_message')
        lookup_field = None

    read_only_fields = ('created_at', 'updated_at',)
我使用generics.ListCreateAPIView从正常GET请求中得到的结果是:

[OrderedDict([('id',1),('linkedin_账户],OrderedDict([('id',1), ('name','Test LinkedIn account')),('prospect',OrderedDict()), ('conversation_id','100'),('archived',False),('last_message', 无)])]

prospect对象没有字段,如果我在序列化程序中添加基本模型字段,它们将返回,但仍然没有子模型字段。单独使用LinkedinProspectAccountSerializer时,它可以正常工作。目前,我将此作为一种解决方法:

def get_prospect(self, obj):
    prospect = user_account.models.LinkedinProspectAccount.objects.get(id=obj.prospect.id)
    serializer = user_account.serializers.LinkedinProspectAccountSerializer(prospect)
    return serializer.data

我认为您需要向LinkedinProspectAccount添加ForeignKey,如下所示:因为您的两个关系没有连接,所以它没有显示嵌套的关系/值。请试一试@AshutoshKS我已经通过LinkedinProspectAccount模型继承LinkedinAccount将它们关联起来,外键关系将是多余的。