AssertionError при вызове put или create в Django Rest Framework

Я пытаюсь обновить представление "Преподаватели" в DRF, чтобы вместо ссылки на поле "Отдел" отображалось название отдела. Когда я добавил поле PrimaryKeyRelated, я смог увидеть department.name, но не смог использовать update или create в DRF. Есть ли способ изменить отображение, не вызывая необходимости в методах, или это не тот случай?

Ошибка

    The `.update()` method does not support writable dotted-source fields by default.
Write an explicit `.update()` method for serializer `school.serializers.TeacherSerializer`, or set `read_only=True` on dotted-source serializer fields.

The `.create()` method does not support writable dotted-source fields by default.
Write an explicit `.create()` method for serializer `school.serializers.TeacherSerializer`, or set `read_only=True` on dotted-source serializer fields.

models.py

class Department(models.Model):
    name = models.CharField(max_length=300)

    def __str__(self):
        return self.name


class Teacher(models.Model):
    name = models.CharField(max_length=300)
    department = models.ForeignKey(Department, on_delete=models.CASCADE)
    tenure = models.BooleanField()

    def __str__(self):
        return f'{self.name} teaches {self.department}'

    # dont need success url if get_absolute_url on create and update view

    def get_absolute_url(self):
        return reverse('teacher', kwargs={'pk': self.pk})

serializers.py

class TeacherSerializer(serializers.HyperlinkedModelSerializer):
    department = serializers.PrimaryKeyRelatedField(
        source='department.name', queryset=Department.objects.all())

    class Meta:
        model = Teacher
        fields = ['url', 'name', 'department', 'tenure']


class DepartmentSerializer(serializers.HyperlinkedModelSerializer):
    teacher_set = TeacherSerializer(many=True, required=False)

    class Meta:
        model = Department
        fields = ['url', 'name', 'teacher_set']

views.py

class TeacherViewSet(viewsets.ModelViewSet):
    queryset = Teacher.objects.all()
    serializer_class = TeacherSerializer
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]


class DepartmentViewSet(viewsets.ModelViewSet):
    queryset = Department.objects.all()
    serializer_class = DepartmentSerializer
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]

пробовали ли вы добавить related_name для модели Teacher в поле foreign key и вызвать в сериализаторах? ссылка на docs

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