Можно ли удалить последние n записей из модели django одним/минимальным запросом к базе данных?

Я пытаюсь удалить последние 10 записей из таблицы/модели Task в django, но не могу сделать это одним запросом.

Task.objects.filter(type='Active').order_by('-id')[:10].delete() 

Вышеприведенный код выдает ошибку AttributeError : 'list' object has no attribute 'delete'. Если я сделаю цикл и затем использую .delete() на каждом объекте этого списка, то он вызовет db n раз, чего я не хочу, есть ли другой способ?

Вы можете использовать первичные ключи в наборе запросов для фильтрации с помощью pk__in=…:

Task.objects.filter(
    pk__in=Task.objects.filter(type='Active').order_by('-id').values('pk')[:10]
).delete() 
Вернуться на верх