我在生产网站中使用Django Flatpages。我想找出最好的方法来确保管理员在编辑文件时出错,可以检索旧版本的页面。我们有备份等等,但恢复起来有点麻烦(即涉及系统管理员,而不是网站编辑器)。
首先,是否有一个包这样做?我不需要将所有数据库更改归档到文件系统或MongelDB,但可能是Flatpages附加组件。
如果没有,我想出了两个选择:
只需要一个临时服务器,其中发生所有实时更改,然后加载生产
监视数据库的一些外部脚本,在看到Flatpages内容的更改后,将最新内容的副本保存在其他表中,如FlatpagesHistory。然后,网站编辑器可以使用Admin服务从FlatpagesHistory中检索旧页面的副本。有没有人这样做过?
感谢您的反馈意见。
感谢。
答案 0 :(得分:3)
尝试使用django-reversion https://github.com/etianen/django-reversion
答案 1 :(得分:0)
没有得到回应,所以我正在挖掘一下。事实证明,你可以很容易地实现这一点。
创建一个这样的模型:
class OldPage(models.Model):
"""
Keep old contents from flatpages.
"""
url = models.CharField('URL',max_length=100, db_index=True)
title = models.CharField(max_length=200)
content = models.TextField(blank=True)
mtime = models.DateTimeField('Modified', db_index=True, auto_now_add=True)
user = models.ForeignKey(django.contrib.auth.models.User)
然后在admin.py文件中,像这样覆盖平面管理
class MyFlatPageAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
"""save a copy of the Flatpage to OldPage"""
history = OldPage()
history.url = obj.url
history.title = obj.title
history.content = obj.content
history.user = request.user
history.save()
obj.save()
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, MyFlatPageAdmin)
你可以为你的OldPage设置一个“只读”管理界面,比如这个
class OldPageAdmin(admin.ModelAdmin):
readonly_fields = ('url','title','content','mtime','user')
list_display = ('url','mtime','user','title')
date_hierarchy = 'mtime'
admin.site.register(lims.pages.models.OldPage, OldPageAdmin)