Python 保存编辑后最后编辑的用户名

Python 保存编辑后最后编辑的用户名,python,django,Python,Django,我正在开发一个博客应用程序,但我遇到了一个问题 我想做的事情:- 我正在尝试存储编辑名称后最后编辑的用户名称。我的意思是,我想在编辑新名称后存储以前的名称 但是当我尝试访问名称时,它会显示更新后的名称。我也尝试过在编辑时保存以前的名字,但它对我不起作用 models.py class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,default='',unique=Tru

我正在开发一个博客应用程序,但我遇到了一个问题

我想做的事情:-

我正在尝试存储编辑名称后最后编辑的用户名称。我的意思是,我想在编辑新名称后存储以前的名称

但是当我尝试访问
名称时,它会显示更新后的名称。我也尝试过在编辑时保存以前的名字,但它对我不起作用

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,default='',unique=True)
    full_name = models.CharField(max_length=100,default='')
我也试过,但我不知道它是如何工作的

任何帮助都将不胜感激


提前感谢。

您可以通过创建新模型来创建自定义解决方案,在发生更改时,您将使用该模型保存更改

例如,您可以覆盖模型的
save
方法,在那里您可以将
name
字段的先前状态保存到新创建的
AccountLog
(假设它是帐户)模型中。那里的字段应该连接到模型,以便您可以从
帐户
模型反向引用日志

这正是django auditlog所做的,但方式更加复杂

从查询中可以看到,只需在模型中添加一个
audit\u log=AuditLog()
条目,就可以看到发生的所有更改

In [2]: Product.audit_log.all()
Out[2]: [<ProductAuditLogEntry: Product: My widget changed at 2011-02-25 06:04:29.292363>,
        <ProductAuditLogEntry: Product: My widget changed at 2011-02-25 06:04:24.898991>,
        <ProductAuditLogEntry: Product: My Gadget super changed at 2011-02-25 06:04:15.448934>,
        <ProductAuditLogEntry: Product: My Gadget changed at 2011-02-25 06:04:06.566589>,
        <ProductAuditLogEntry: Product: My Gadget created at 2011-02-25 06:03:57.751222>,
        <ProductAuditLogEntry: Product: My widget created at 2011-02-25 06:03:42.027220>]
[2]中的
:Product.audit\u log.all()
Out[2]:[,,
,
,
,
,
]

请注意,您可能希望
跟踪完整的模型历史记录
,而不是
跟踪创建/修改模型的用户
,因为它跟踪所有更改。

您希望如何处理此“上次编辑的名称”数据?您是否只需要一个包来存储模型实例的完整历史记录?是的,这样会更好。我想保存编辑前的名称。您希望以前的名称用于什么?您希望如何使用它?如果用户想要下载个人资料数据,那么我想列出他/她更改的姓名列表。你知道我该怎么做吗?@IainShelvington,发生了什么事,说话停止了?你的意思是我必须为它制作另一个模型,但django如何知道保存以前数据的字段?我的意思是,我是否需要将
全名
实例保存到另一个
模型
中?(同时更新了我的问题)是的,您确实需要创建另一个模型,以便保存当前模型的日志。您将指定在
save
方法中保存哪些字段。基本上,在当前模型的
save
方法中,您将创建日志模型(与当前模型具有相同的字段),并将旧值分配给日志模型,然后继续在当前模型中保存新值。感谢您的帮助。我一定会试试这个。真的很有帮助