是否可以在 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()
上面的代码给我错误 AttributeError:'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()
我正在尝试删除 Django 中任务 table/model 的最后 10 条记录,但我无法在一个查询中执行此操作。
Task.objects.filter(type='Active').order_by('-id')[:10].delete()
上面的代码给我错误 AttributeError:'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()