在Django中记录用户活动的正确方法是什么?
例如,假设用户有Groups
,我想记录添加或删除Object1
的时间。
想到的方法是每次都创建一个新记录并提取最新记录但这感觉不对(并导致一些过滤问题,例如:你不能只在is_member=True
上过滤,因为你'得到陈旧的结果)。有没有正确的方法在Django中记录这些?
答案 0 :(得分:3)
您可以使用django-auditable-models。它将挂钩django工作流程,并避免你必须自己编写所有逻辑。
答案 1 :(得分:0)
答案 2 :(得分:0)
要记录类似的内容,我建议您使用core
型号创建TimeStampModel
应用:
from django.db import models
from django.utils.timezone import now
class TimeStampModel(models.Model):
"""
TimeStampModel class allows us to follow creation and update of each inherit instance
"""
created_at = models.DateTimeField(auto_now_add=now(), editable=False)
updated_at = models.DateTimeField(auto_now=now(), editable=False)
class Meta:
abstract = True
现在,从TimeStampModel
继承您要记录创建或更新日期的每个模型。
E.g:
from django.db import models
from core.models import TimeStampModel
class Token(TimeStampModel):
uuid = models.CharField(max_length=255, primary_key=True)
# ...
您还可以添加delete
属性(布尔值)以实现逻辑删除。最后一次更新将是删除日期。
Two Scoops of Django 1.8也推荐这种做法。