设置:
- 我正在开发一个 Django 应用程序,它允许用户在数据库中创建一个对象,然后返回并根据需要对其进行编辑。
- Django 的管理站点保留通过管理站点对对象所做更改的历史记录。
问题:
- 如何将我的应用程序连接到管理站点的更改历史记录,以便我可以看到用户对其“内容”所做的更改历史记录?
最佳答案
管理历史只是一个应用程序,就像任何其他 Django 应用程序一样,除了在管理站点上的特殊位置。
模型在 django.contrib.admin.models.LogEntry 中。
当用户进行更改时,像这样添加到日志中(无耻地从 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
是被更改的对象。
现在我看到了大牛的回答,同意他的观点,非常有限。
在我看来,更好的方法是使用 Marty Alchin 在他的书中的代码 Pro Django (请参阅从第 263 页开始的保留历史记录)。有申请django-simple-history它实现并扩展了这种方法 ( docs here )。
关于django - 绑定(bind)到 Django Admin 的模型历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987669/