在django中捕获模型对象删除时间的正确方法是什么?

时间:2018-01-03 22:43:58

标签: django

信号代码:

@receiver(post_save, sender=TestModel)
def update_log(sender, instance, **kwargs):
    TestModelLog.objects.create(description=instance.description, datetime=instance.updated)


@receiver(post_delete, sender=TestModel)
def delete_log(sender, instance, **kwargs):
    TestModelLog.objects.create(description=instance.description, datetime=now())

模型代码:

class TestModel(models.Model):

    description = models.CharField(max_length=34)
    updated = models.DateTimeField(auto_now=True)

我制作了类似上面的信号代码,用于捕获TestModel的日志。

如您所见,我可以使用instance作为datetime=instance.updated来获取更新时间。它与TestModel的更新时间正确相同。

当我想要删除时间时,datetime=instance.updated无效。

所以我尝试使用datetime=now()捕获已删除的时间。

但我很好奇除了datetime=now()之外还有其他好办法。

你能让我知道抓住对象删除时间的其他好方法吗?

1 个答案:

答案 0 :(得分:1)

在您的TestModelLog中,您可能会有以下内容:

class TestModelLog(models.Model):
    description = models.CharField(max_length=34)
    updated = models.DateTimeField(auto_now_add=True)

然后创建TestModelLog应该是:

TestModelLog.objects.create(description=instance.description)

因为auto_now_add会发挥魔力。