'collections.OrderedDict' 对象没有属性 'id'

'collections.OrderedDict' object has no attribute 'id'

我的模型与外键相关:

class Speaker(models.Model):
    speaker = models.ForeignKey(User, on_delete=models.CASCADE)

class Course(models.Model):
    ...
    author = models.ForeignKey(Speaker, on_delete=models.CASCADE, 
    related_name='course_author')

我的序列化程序:

class SpeakerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Speaker
        fields = ['id',...]

class CourseSerializer(serializers.ModelSerializer):
    ....
    author = SpeakerSerializer(many=False, required=True)
    ....
    class Meta:
        model = Course
        fields = ['id', 'author',...]

    def create(self, validated_data):
        ...
        author = validated_data.get('author')
        ...
        course, _ = Course.objects.create(author=author.id, **validated_data)

        course.save()

我正在向此序列化程序发送 POST 请求并收到此响应: 请帮忙!

course, _ = Course.objects.create(author=author.id, **validated_data)
AttributeError: 'collections.OrderedDict' object has no attribute 'id'

尝试:

author_id = validated_data.pop('author').get('id')

并确保您发送正确的嵌套 JSON API.

请使用 author['id'] 而不是 'author.id' 来获取 OrderdDic 对象中 id 的值。