Я пишу API-интерфейс Django, который я хотел бы знать, если поле напоминания изменилось, тогда объект модели Назначения сохранит текущего пользователя.я использовал эту ссылку См. изменения объекта в post_save в django rest framework и напишите этот код
class AppointmentBackOfficeViewSet(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.CreateModelMixin,
viewsets.GenericViewSet):
model = Appointment
read_serializer_class = AppointmentSerializer
write_serializer_class = AppointmentCreateSerializer
reminder_change = False
def perform_update(self, serializer):
if 'reminder' in serializer.validated_data:
self.reminder_change = True
serializer.save()
def update(self, request, *args, **kwargs):
super(AppointmentBackOfficeViewSet, self).update(request, *args, **kwargs)
instance = self.get_object()
instance.user = request.user
if self.reminder_change:
instance.reminder_user = request.user
instance.save()
res = self.write_serializer_class(instance).data
return Response(res)
class AppointmentCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Appointment
exclude = ['created_time', 'modified_time']
есть ли способ написать этот код более понятным, чем этот: не используйте класс self.reminder_changeполе есть лучший способ?возможно, переместить эти строки в сериализатор ?? (в сериализаторе нет доступа к request.user)