Django admin Внешний 'атомный' блок не может использовать savepoint = False, когда автокоммит отключен
Когда я пытаюсь удалить элемент из таблицы, созданной django admin, он выбрасывает эту ошибку
Как я могу это исправить?
Это ограничение было снято в Django 1.8.5 (коммит: django/django@425c5e4).
Однако функция Delete selected по-прежнему не будет работать, если автокоммит выключен.
1. Восстановление автокоммита при случайном отключении
Если у вас есть 'AUTOCOMMIT': False в settings.py, удалите его, и функция будет работать.
DATABASES = {
'default': {
...
'AUTOCOMMIT': False, # Remove this line
}
}
2. Запланировать действие с помощью transaction.atomic
Если вам нужно отключить автокоммит, установите патч actions.delete_selected в manage.py или AppConfig.
from django.contrib.admin import actions
from django.db import transaction
actions.delete_selected = transaction.atomic(actions.delete_selected)