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



我试图删除django中Task表/模型的最后10条记录,但无法在一个查询中完成。

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

上面的代码给了我错误属性错误:"list"对象没有属性"delete"。如果我做一个循环,然后对列表中的每个对象使用.delete((,那么它会调用dbn次,这是我不想要的,还有其他方法吗?

您可以使用查询集中的主键来使用pk__in=…:进行筛选

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

最新更新