有类似的东西
- 由...制作
- 创建日期
- modified_by
- 修改日期
对于许多表来说,这将是非常常见的模式。
1)您可以使用以下命令在model.py中自动设置创建日期(但不能设置其他日期)
created_date = models.DateTimeField(auto_now_add=True, editable=False)
2)您可以在model.py中创建/修改日期(但不能由/用户创建,因为没有请求上下文)
def save(self):
if self.id:
self.modified_date = datetime.now()
else:
self.created_date = datetime.now()
super(MyModel,self).save()
3)您可以在admin.py中设置创建/修改日期和日期-但这不会处理非管理员更新
def save_model(self, request, obj, form, change):
if change:
obj.modified_by = request.user
obj.modified_date = datetime.now()
else:
obj.created_by = request.user
obj.created_date = datetime.now()
obj.save()
4)最后一个位置是在view.py中,它可以完成所有4个操作,但不包括管理员更新。
因此,现实中必须分散逻辑,至少以3和4重复(或者模型中的方法从两者中调用,这将被遗漏)
有什么更好的方法?(我已经使用python / django了几天,所以很容易遗漏一些明显的东西)
- 你能做一些像@login_required这样的东西吗,例如@audit_changes
- 您可以访问模型中的请求和当前用户并在那里集中逻辑吗?