Django模型 - 无需触摸即可更新属性lastmodified_at

问题描述:

我正在创建一个小型wiki应用并使用lastmodified_at属性(auto_now)。现在我想要统计我的页面的视图。Django模型 - 无需触摸即可更新属性lastmodified_at

我的第一个想法是在我的维基文章对象中添加一个字段,并在调用showArticle视图时将其添加一个字段。

不幸的是,这会导致lastmodified_at也被更新。

是否有另一种可能性,然后创建一个额外的表,其中包含article_id和计数器或删除/重建我的auto_now属性?

谢谢!

我会忍不住有一个单独的模型来跟踪与FK网页浏览到您的文章模型。

例如

class ArticleViewCount(model): 
    counter = models.PositiveIntegerField() 
    article = models.OneToOneField(Article) 

然后,你可以使用相关的领域

+0

确定物品从模板调用的页面数,这就是我想... – Ron 2013-04-09 06:52:43

有几个答案已经:

例如,不直接使用auto_now,覆盖保存 或保存之前更改字段的auto_now财产。

Temporarily disable auto_now/auto_now_add

我将提供另一种方法很脏,如果你想保持auto_now:

class Temp(models.Model): 
    test = models.CharField(max_length=255)  
    updated = models.DateTimeFeild(auto_now=True) 

    def save_without_updated(self): 
     self._meta.get_field("updated").auto_now = False 
     # self.meta.auto_created = False 
     self.save() 
     # self.meta.auto_created = True 
     self._meta.get_field("updated").auto_now = True