Как мне обновлять отношения многие ко многим в DEST-среде Django?
Вот моя модель.
class SchoolTeacher(AbstractBase):
school = models.ForeignKey(School, on_delete=models.CASCADE,
related_name='teachers')
user = models.ForeignKey(User, on_delete=models.CASCADE,
related_name='teacher_at',)
subjects = models.ManyToManyField(SchoolSubject,
related_name='teachers')
Вот мой сериализатор:
class SchoolTeacherSerializer(serializers.ModelSerializer):
....
def create(self, validated_data):
school_class = validated_data.get('school_class', None)
stream = validated_data.get('stream', None)
school_teacher_model_fields = [
f.name for f in SchoolTeacher._meta.get_fields()]
valid_teacher_data = {
key: validated_data[key]
for key in school_teacher_model_fields
if key in validated_data.keys()
}
subjects = valid_teacher_data.pop('subjects')
teacher = SchoolTeacher.objects.create(**valid_teacher_data)
for subject in subjects:
teacher.subjects.add(subject)
self.add_class_teacher(stream, school_class, teacher)
return teacher
def update(self, instance, validated_data):
subjects = validated_data.pop('subjects')
school_class = validated_data.get('school_class', None)
stream = validated_data.get('stream', None)
teacher = instance
for (key, value) in validated_data.items():
setattr(teacher, key, value)
for subject in subjects:
teacher.subjects.add(subject)
teacher.save()
return teacher
Как мне добиться обновления subjects
?В настоящее время я могу только добавлять, а не удалять существующие темы.