是否可以在 one/minimum 数据库查询中删除 django 模型的最后 n 条记录?

Is it possible to delete last n records of a django model in one/minimum database query?

我正在尝试删除 Django 中任务 table/model 的最后 10 条记录,但我无法在一个查询中执行此操作。

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

上面的代码给我错误 A​​ttributeError:'list' 对象没有属性 'delete'。 如果我创建一个循环,然后在该列表的每个对象上使用 .delete(),那么它会调用 db n 次,这是我不想要的,还有其他方法吗?

您可以使用查询集中的主键来过滤 pk__in=…:

Task.objects.filter(
    <strong>pk__in=</strong>Task.objects.filter(type='Active').order_by('-id')<strong>.values('pk')</strong>[:10]
).delete()