【发布时间】:2018-11-12 18:31:26
【问题描述】:
如何从 Wagtail 数据库中删除旧版本?我看到每次进行更改时,页面的先前版本都会保存在数据库中……非常好,但是我如何“取出垃圾”?
换句话说:“好的,这个页面现在已经完成了,我不想再保留以前的版本了。”你会认为这很容易——但是,在哪里是吗?
【问题讨论】:
标签: wagtail
如何从 Wagtail 数据库中删除旧版本?我看到每次进行更改时,页面的先前版本都会保存在数据库中……非常好,但是我如何“取出垃圾”?
换句话说:“好的,这个页面现在已经完成了,我不想再保留以前的版本了。”你会认为这很容易——但是,在哪里是吗?
【问题讨论】:
标签: wagtail
修订存储在wagtail.core.models.PageRevision 模型中,即数据库中的wagtailcore_pagerevision 表中。要删除给定页面的所有修订,您可以从 ./manage.py shell 运行以下命令:
from wagtail.core.models import PageRevision
PageRevision.objects.filter(page_id=123).delete()
请注意,“另存为草稿”和“提交审核”工作流程也可以通过保存 PageRevision 条目来工作,因此您只能在页面以您想要保留的状态发布后执行此操作。
【讨论】:
DELETE FROM wagtailcore_pagerevision; VACUUM ...吗?我会不可挽回地破坏任何东西吗?
wagtailcore_page 表包含一个专栏,live_revision_id。因此,不得删除此表所指向的修订。 (而且我不认为 SQLite 可以支持 DELETE 查询以一步完成。)
live_revision_id 所指的,但这并没有真正用于除了在 Wagtail 中指示当前实时版本之外的任何内容修订列表视图。 Wagtail 管理员将优雅地处理缺少修订记录。