在我的模型中,我创建了一个抽象基类来存储有关上次数据库修改的信息。为此,我重写了 save 方法,其中静态日期时间字段用当前时间更新 当我尝试检索上次修改时间时,返回一个DeferredAttribute对象,获取该值的唯一方法是通过从实例化对象中调用该字段。但是,如果删除数据库中的所有对象,我将无法读取该值。
class Timestamp(models.Model):
modified = models.DateTimeField(null=True)
def save(self, *args, **kwargs):
Timestamp.modified = timezone.now()
super(Timestamp, self).save(*args, **kwargs)
class Meta:
abstract = True
class Node(Timestamp):
latitude = models.FloatField(default=0.0)
longitude = models.FloatField(default=0.0)
# ...
# few more subclasses of Timestamp
有没有办法在没有派生类对象的情况下获取修改的字段值?
编辑:
看起来无法将数据存储在静态字段中,因此 modified 变量永远不会保存到数据库中。在这种情况下,我会按照McAbra的回复。
答案 0 :(得分:1)
你可以简单地说:
class Timestamp(models.Model):
created_at = models.DateTimeField(auto_add=True)
updated_at = models.DateTimeField(auto_add_now=True)
class Meta:
abstract = True
class Node(Timestamp):
latitude = models.FloatField(default=0.0)
longitude = models.FloatField(default=0.0)