【问题标题】:Is it possible to delete last n records of a django model in one/minimum database query?是否可以在一个/最少的数据库查询中删除 django 模型的最后 n 条记录?
【发布时间】:2022-01-13 10:22:28
【问题描述】:

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

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

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

【问题讨论】:

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

标签: python sql django django-rest-framework orm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2020-08-22
    相关资源
    最近更新 更多