拥有像这样的东西
- 创建于
- 创建日期(_D)
- 修改人_
- 修改日期
对于很多桌子来说,这是一种非常常见的模式.
1)您可以使用以下命令在model.py中自动设置创建日期(而不是其他日期
创建日期(_D) = models.DateTimeField(auto_now_add=True, editable=False)
2) 您可以在模型中创建/修改日期(但不能由/user创建/修改,因为没有请求上下文).和…在一起
def save(self):
if self.id:
self.修改日期 = datetime.now()
else:
self.创建日期(_D) = datetime.now()
super(MyModel,self).save()
3)您可以在admin.py中设置创建/修改日期和日期-但这不处理非管理员更新
def save_model(self, request, obj, form, change):
if change:
obj.修改人_ = request.user
obj.修改日期 = datetime.now()
else:
obj.创建于 = request.user
obj.创建日期(_D) = datetime.now()
obj.save()
4)最后一个位置是view.py,它可以执行所有4项操作,但不包括管理员更新.
所以现实地说,我们必须让逻辑展开,至少在3&;4(或从两者调用的模型上的方法,将被忽略)
有什么更好的方法吗?(我已经使用python/Django几天了,所以很容易遗漏一些显而易见的东西)
- 您是否可以执行类似@login_Required的操作,例如@AUDIT_CHANGES
- 您是否可以访问模型中的请求和当前用户,并将逻辑集中在那里?