Объект 'collections.OrderedDict' не имеет атрибута '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'] для получения значения id в объекте OrderdDic.

Вернуться на верх