Объект '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.