@Antigo_ptz

Django Rest сработает ли транзакция в декораторе?

Всем привет! В проекте 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 (из-за этих переопределений в коде куча дублируемого кода, т.к. при работе с каждой моделью системы происходит запись в таблицу с историей изменения)?
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы