The Setup:个
- 我正在开发一个Django应用程序,它允许用户在数据库中创建对象,然后根据需要返回并编辑它.
- Django的管理站点保存通过管理站点对对象所做更改的历史记录.
The Question:个
- 如何将我的应用程序连接到管理网站的更改历史记录中,以便查看用户对其"内容"所做更改的历史记录?
The Setup:个
The Question:个
管理历史只是一个像任何其他Django应用程序一样的应用程序,除了在管理网站上的特殊放置.
该模型位于django.contri.admin.Models.LogEntry中.
当用户进行更改时,像这样添加到日志(log)中(无耻地从contrib/admin/options.py窃取:
from django.utils.encoding import force_unicode
from django.contrib.contenttypes.models import ContentType
from django.contrib.admin.models import LogEntry, ADDITION
LogEntry.objects.log_action(
user_id = request.user.pk,
content_type_id = ContentType.objects.get_for_model(object).pk,
object_id = object.pk,
object_repr = force_unicode(object),
action_flag = ADDITION
)
其中object
当然是被更改的对象.
现在我看到了丹尼尔的回答,并同意他的看法,这是相当有限的.
在我看来,更好的方法是在他的书Pro Django中使用Marty Alchin的代码(参见从第263页开始的Keeping Historical Records).存在实现和扩展该方法的应用程序django-simple-history(docs here).