Можно ли удалить последние 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()