Select_for_update не работает, даже если он находится внутри транзакции

Я пытаюсь получить объект клиента из базы данных. Для этого я написал отдельный сервис. Но моя проблема в том, что select_for_update не работает, когда я пытаюсь получить клиента через него, но raw orm query работает.

Ошибка, которую я получаю

django.db.transaction.TransactionManagementError: select_for_update cannot be used outside of a transaction.

Обслуживание клиентов

class CustomerService:
    @staticmethod
    def get_customer(select_for_update=False, **params_dict) -> Customer:
        """
        param: customer mobile number
        return: Customer object
        raises exception INVALID_CUSTOMER if customer does not exist
        """
        try:
            customer = Customer.objects
            if select_for_update:
                customer = customer.select_for_update()
            customer = customer.get(**params_dict)
            return customer
        except Customer.DoesNotExist:
            raise ParseException(INVALID_CUSTOMER, errors='INVALID_CUSTOMER')

Это не работает-

 @transaction.atomic
    def create(self, request, *args, **kwargs):
        customer = CustomerService.get_customer({"id": customer_id}, select_for_update=True)


но это делает

@transaction.atomic
    def create(self, request, *args, **kwargs):
        try:
            customer = Customer.objects.select_for_update().get(id=customer_id)
        except Customer.DoesNotExist:
            raise ParseException(INVALID_CUSTOMER, errors='INVALID_CUSTOMER')

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