Всем привет! В проекте Django создал декоратор для записи истории изменений в отдельную таблицу
def change_history(a_function_to_decorate):
@transaction.atomic
def wrapper(self, request, *args, **kwargs):
#Код для создания записи в таблице с историей изменения документа
return a_function_to_decorate(self, request, *args, **kwargs)
return wrapper
Данный декоратор вешаю на методы put и update в class-based view
class HospitalDetailView(HospitalMixin, generics.RetrieveUpdateDestroyAPIView):
@change_history
def put(self, request, *args, **kwargs):
return super().put(request, *args, **kwargs)
@change_history
def delete(self, request, *args, **kwargs):
return super().delete(request, *args, **kwargs)
1. Корректно ли я поставил аннотацию @transaction.atomic в декораторе (сработает ли транзакция корректно)?
2. Есть ли какой-то способ проставить аннотацию-декоратор @change_history не переопределяя методы put и delete (из-за этих переопределений в коде куча дублируемого кода, т.к. при работе с каждой моделью системы происходит запись в таблицу с историей изменения)?