记录Django用户活动的正确方法

时间:2015-11-10 06:43:24

标签: python django django-models

在Django中记录用户活动的正确方法是什么?

例如,假设用户有Groups,我想记录添加或删除Object1的时间。

想到的方法是每次都创建一个新记录并提取最新记录但这感觉不对(并导致一些过滤问题,例如:你不能只在is_member=True上过滤,因为你'得到陈旧的结果)。有没有正确的方法在Django中记录这些?

3 个答案:

答案 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也推荐这种做法。