返事が来なかったので、ちょっと調べてみました。これを非常に簡単に実装できることがわかりました。
次のようなモデルを作成します。
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 ファイルで、flatpage admin を次のようにオーバーライドします。
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)