My Models related with foreign key:
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')
My serializers:
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()
I'm sending POST request to this serializer and getting this response: Help please!
course, _ = Course.objects.create(author=author.id, **validated_data)
AttributeError: 'collections.OrderedDict' object has no attribute 'id'
Try:
author_id = validated_data.pop('author').get('id')
and make sure you send a correct nested JSON API.