一些应用场景要求每个数据都要记录创建人、修改人。
笨方法是在前端调用接口时,获取调用人的信息,然后填入数据库。
这种方法很直观,但是每个数据都需要做这个重复的工作。
可否通过自定义模型的 save
方法,在保存之前,获取当前调用人的信息呢?
save
方法并没有提供这个参数,我们需要自己想办法通过中间件获取 request.user
.
更简单的方式,是直接调用现成的第三方库,例如 django_currentuser
。
from django_currentuser.db.models import CurrentUserField
class BaseRecordModel(models.Model):
create_by = CurrentUserField(verbose_name='创建人', related_name='%(class)s_create_by')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
update_by = CurrentUserField(on_update=True, verbose_name='修改人', related_name='%(class)s_update_by')
update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
status = models.CharField(
max_length=1,
choices=[('1', '可用'), ('2', '不可用')],
null=True, blank=True,
verbose_name='可用'
)
class Meta:
abstract = True
只用定义个一个抽象类,后面需要记录的数据继承这个 model
即可实现数据留痕。
网友评论