为模型删除最旧的Django对象以保持最新的40

时间:2014-12-08 13:45:47

标签: django

我有一个django模型,我想保留最新的40个对象。

我尝试了以下代码来执行此操作

delete = model.count() - 40
model.objects.all[:delete].delete()

我收到错误"无法使用'限制'或者'抵消'删除。"尽管如此。

有人可以建议这样做吗?

1 个答案:

答案 0 :(得分:2)

不漂亮但有效:

ids = MyModel.objects.order_by("-pk").values_list("pk", flat=True)[:40]
MyModel.objects.exclude(pk__in=list(ids)).delete()