我想在保存新记录(而不是更新现有记录)时,在Django模型对象的save()方法中触发一个特殊操作。
是检查(self。id != None)有必要且充分地保证自我记录是新的且没有被更新?有没有可能被忽略的特殊情况?
我想在保存新记录(而不是更新现有记录)时,在Django模型对象的save()方法中触发一个特殊操作。
是检查(self。id != None)有必要且充分地保证自我记录是新的且没有被更新?有没有可能被忽略的特殊情况?
当前回答
> def save_model(self, request, obj, form, change):
> if form.instance._state.adding:
> form.instance.author = request.user
> super().save_model(request, obj, form, change)
> else:
> obj.updated_by = request.user.username
>
> super().save_model(request, obj, form, change)
其他回答
> def save_model(self, request, obj, form, change):
> if form.instance._state.adding:
> form.instance.author = request.user
> super().save_model(request, obj, form, change)
> else:
> obj.updated_by = request.user.username
>
> super().save_model(request, obj, form, change)
在python 3和django 3中,这是在我的项目中工作的:
def save_model(self, request, obj, form, change):
if not change:
#put your code here when adding a new object.
这是常见的做法。
id将在第一次保存到db时给出
自我检查。Id假设Id是模型的主键。更通用的方法是使用pk快捷方式。
Is_new = self。pk为None
我很晚才谈这个话题,但我遇到了自我的问题。当Pk具有与之关联的默认值时,将填充它。
我解决这个问题的方法是在模型中添加一个date_created字段
date_created = models.DateTimeField(auto_now_add=True)
你可以从这里出发
Created = self。date_created为None