如何创建django操作的历史记录

如何创建django操作的历史记录,django,Django,如何在Django中创建一个历史视图,显示用户、修改/创建时间、以前的值和更新/创建的值? 以及如何在所有系统中跟踪用户操作以插入历史表 我想要这样的桌子 时间 使用者 活动 领域 以前的值 新价值观 1. 2020-1-16 阿里 创造 无效的 新纪录 10:10:10 创建采用参数的函数而不是视图。并创建一个新的tablemodel来存储操作。让它成为历史吧 每当运行CRUD操作时,通过插入适当的值(如操作、字段和值),调用下面的函数 def history(user,operation,f

如何在Django中创建一个历史视图,显示用户、修改/创建时间、以前的值和更新/创建的值? 以及如何在所有系统中跟踪用户操作以插入历史表

我想要这样的桌子

时间 使用者 活动 领域 以前的值 新价值观 1. 2020-1-16 阿里 创造 无效的 新纪录 10:10:10
创建采用参数的函数而不是视图。并创建一个新的tablemodel来存储操作。让它成为历史吧

每当运行CRUD操作时,通过插入适当的值(如操作、字段和值),调用下面的函数

def history(user,operation,field,previous,new):
     History.objects.create(user=request.user,type=operation,field=field,prev = previous,new = new)
    return redirect('/')

创建采用参数的函数而不是视图。并创建一个新的tablemodel来存储操作。让它成为历史吧

每当运行CRUD操作时,通过插入适当的值(如操作、字段和值),调用下面的函数

def history(user,operation,field,previous,new):
     History.objects.create(user=request.user,type=operation,field=field,prev = previous,new = new)
    return redirect('/')
你可以看看: 它似乎与您所需要的非常相似

正如我所建议的,django_simple_history也是我的第一个想法,但它并没有向您提供哪些字段被更改的信息

至少存在两个问题:

您的所有模型都有一个历史模型,这可能在许多方面存在问题; 你每次都需要明确地调用它,你会忘记它的。 如果您尝试这种方法,我建议您至少创建一个新的模型基类,该基类通过重写save和delete方法来集成历史,而不是直接从django.models.Model继承。您可以看看: 它似乎与您所需要的非常相似

正如我所建议的,django_simple_history也是我的第一个想法,但它并没有向您提供哪些字段被更改的信息

至少存在两个问题:

您的所有模型都有一个历史模型,这可能在许多方面存在问题; 你每次都需要明确地调用它,你会忘记它的。
如果您尝试这种方法,我建议您至少创建一个新的模型基类,该基类通过重写save和delete方法来集成历史,而不是从类继承,而不是直接从django.models.Model.

您可以使用django\u simple\u history。请看这里:您可以使用django_simple_history。请看这里:谢谢,我知道这一点,我需要的是如何在数据库中创建记录器,在obj.save for any model。此外,如果操作是update,则如何仅获取更新的记录?如果操作是update,则在操作之前将数据存储到新变量,然后在操作之后将数据存储到另一个变量,然后将数据发送到函数是的,你是对的,但我想覆盖save方法,因为我有大量的操作。请尝试:obj.savecommit=False,然后在下面写下你的操作,然后再次保存Hanks,我知道这一点,我需要的是如何在数据库中创建记录器,在obj.save中也为任何模型创建记录器,如果操作为更新,如何仅获取更新的记录?如果操作为更新,则在操作之前,将数据存储到新变量,然后在操作之后将数据存储到另一个变量,然后将数据发送到函数Yes,您是对的,但我想覆盖save方法,因为我有大量的操作。请尝试:obj.savecommit=False,然后在下面编写您的操作,然后再次保存。如果我使用历史模型的方法。我如何才能转发到该字段被添加、更新或删除的页面?这个问题令人惊讶。这取决于您的系统、需求、用户体验等。您可以使用Django Admin或使用历史记录模型创建自定义视图。谢谢。如果我使用历史模型的方法。我如何才能转发到该字段被添加、更新或删除的页面?这个问题令人惊讶。这取决于您的系统、需求、用户体验等。您可以使用Django Admin或使用历史模型创建自定义视图。