我正在使用带有django 1.8的django-simple-history == 1.9.0包。 当我在管理员之外创建一个对象,然后在管理页面中查看该对象的历史记录时,它会显示一条消息
此对象没有更改历史记录。它可能没有添加 通过这个管理站点。
我尝试为该对象设置用户:
user = User.objects.get(username='john')
Poll.objects.get(id=536).history.update(history_user=user)
但这并没有解决问题。
Poll.objects.get(id=536).history.all().count()
返回1,因此生成了历史记录。 任何想法如何使它显示历史或如何创建一个额外的历史? 我也试过了update_change_reason,但这根本不起作用。
答案 0 :(得分:1)
假设您的django-simple配置正确,请按照以下步骤操作
在您要更改导入 django-simple-history 的应用的 model.py
文件中,以下为导入摘录:
from simple_history.models import HistoricalRecords
在 model.py
文件中,添加历史属性,如下所示:
history = HistoricalRecords()
示例:
from django.db import models
from simple_history.models import HistoricalRecords
class Poll(models.Model):
question = models.CharField(max_length=200)
history = HistoricalRecords()
为了让您在管理员之外进行的更改显示在Django管理员中,只需在 admin.py
文件中添加以下代码:
导入:
from simple_history.admin import SimpleHistoryAdmin
使用注册表配置管理员历史记录:
admin.site.register(Pool, SimpleHistoryAdmin)
示例:
from django.contrib import admin
from simple_history.admin import SimpleHistoryAdmin
from .models import Pool
# Register your models here.
admin.site.register(Tag, SimpleHistoryAdmin)
在此之后,您的历史记录将显示在管理员中。
来源:
https://django-simple-history.readthedocs.io/en/latest/usage.html#integration-with-django-admin
此致
Felipe Dominguesche
Web Developer
答案 1 :(得分:0)
显然我需要在LogEntry中创建日志,如下例所示,因为django-simple-history不会跟踪管理页面之外的更改:
from django.contrib.admin.models import LogEntry
from django.contrib.admin.models import LogEntryManager, ADDITION, CHANGE
user_id = User.objects.all()[0].id
content_type_id = ContentType.objects.get(model='color').id
object_id = 4
object_repr = 'Color object'
action_flag = CHANGE
change_message = 'you changed it!'
LogEntry.objects.log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=change_message)