django - 绑定(bind)到 Django Admin 的模型历史

标签 django django-models django-admin

设置:

  • 我正在开发一个 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/

相关文章:

python - 如何在 django admin 中创建分组下拉列表?

python - 重用 auth 用户更改的密码

python - 如何在不加载固定装置的情况下运行 syncdb?

python - 如何使用格式化的日期时间字段获取 Django 查询集结果

python - Django 中的关系字段

Django admin,list_editable 中的外键字段

django - 用 Django 返回 GeoJson

python json序列化日期时间

python - 原始数据异常 : You cannot access body after reading from request's data stream

python - 递归关系与 Django 模型中的描述