我该如何访问要序列化的对象内部的ID字段?

我正在写一个CommentSerializer,因为它的一个字段是originalPostPost已经写了PostSerializer。在模型中,Comment继承了Post,但仅有originalPost作为附加字段。两者的代码如下:

class PostSerializer(serializers.ModelSerializer):
    poster = UserSerializer()
    community = CommunitySerializer()

    class Meta:
        model = Post
        fields = ['post','community','poster','id']

    def create(self,validated_data):
        userData = validated_data.pop('poster')
        user = User.objects.get_or_create(username=userData['username'],email=userData['email'],first_name=userData['first_name'],last_name=userData['last_name'],password=userData['password'])[0]
        validated_data['poster'] = user

        communityData = validated_data.pop('community')
        community = Community.objects.get_or_create(name=communityData['name'])[0]
        validated_data['community'] = community

        post = Post.objects.create(**validated_data)
        return post

class CommentSerializer(serializers.ModelSerializer):
    poster = UserSerializer()
    community = CommunitySerializer()
    originalPost = PostSerializer()
    class Meta:
        model = Comment
        fields = ['post','originalPost']

    def create(self,password=userData['password'])[0]
        validated_data['poster'] = user
        communityData = validated_data.pop('community')
        community = Community.objects.get_or_create(name=communityData['name'])[0]
        validated_data['community'] = community

        originalPostData = validated_data.pop('originalPost')
        originalPost = Post.objects.get_or_create(id = originalPostData['id'])[0]
        validated_data['originalPost'] = originalPost

        comment = Comment.objects.create(**validated_data)
        return comment

我的问题是我将以下comment1通过了我的createComment测试:

self.postWithId = {'post': 'post text','community': self.community1,'poster': self.user1,'id': 1}
self.comment1 = {'post': 'comment text','originalPost': self.postWithId}

很明显,我的评论的originalPost字段应该有一个id字段,但是当到达此行时  originalPost = Post.objects.get_or_create(id = originalPostData['id'])[0]在CommentSerializer中出现键错误,因为似乎id字段已从validated_data输入中完全删除。

我一直看到很多相关的帖子说要制作id read_only=FalseDjango REST Framework nested resource key "id" unaccessible,然后需要我手动设置一个id,我这样做对此,我可以采用默认的AutoField行为。

qqgz0nimab 回答:我该如何访问要序列化的对象内部的ID字段?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3039378.html

大家都在问