Transaction.atomic() откатывается назад, если выполняется другой запрос

У меня проблемы с Django в transaction.atomic. У меня есть приложение, в котором пользователи могут обновлять свою информацию, но я буду приводить пример здесь. Поэтому я хочу предотвратить обновление этого поля, если получено более одного запроса, поэтому я хочу заблокировать строку, для чего я использую transaction.atomic и select_for_update. Итак, у меня есть модель UserProfile, в которой я хочу обновить некоторую информацию, метод, который я использую для обновления, приведен ниже

Class Profile(models.Model):
    def get_queryset(self):
        return self.__class__.objects.filter(id=self.id)

    @transaction.atomic()
    def update_age(
        self,
        age: int,
    ) -> None:
        obj = self.get_queryset().select_for_update().get()
        obj.age = age
        obj.save()

Ниже - вид

class UserProfileView(APIView):
    
    def put(self, request):
        profile = rquest.user.profile
        profile.update_age(request.data["age"])
    
        UpdateHistory.objects.create(user=request.user, updated_field="age")

Проблема в том, что UpdateHistory объект создается, но обновление возраста откатывается, но когда я удаляю создание UpdateHistory, возраст действительно успешно обновляется. Таким образом, приведенный выше код только создает UpdateHistory, но не обновляет возраст UserProfile. Но если я удалю строку UpdateHistory.objects.create(user=request.user, updated_field="age"), возраст будет успешно обновлен.

Ни одно исключение не поднимается вообще, это сбивает меня с толку уже несколько дней. Надеюсь, что смогу получить помощь. Заранее спасибо

Я бы просто использовал джанго update:

self.get_queryset().update(age=age)
Вернуться на верх