Django Contenttypes和装饰

时间:2009-05-26 19:51:33

标签: django django-models content-type decorator

该网站使用了2个对象 - 文章和博客。每次查看文章或博客时,相关的计数器应增加1。

我们的想法是拥有一个“十大”应用程序,用于衡量文章和条目的“受欢迎程度”。

因为我使用多个对象,所以我希望Tracker模型对相关对象使用genericForeignKey。

#models.py
class Tracker(models.Model):
    count = models.PositiveIntegerField(default=1)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')
    def hit(self):
        self.count += 1

我想编写一个包装视图函数的装饰器,但可能没有必要。

由于

1 个答案:

答案 0 :(得分:2)

如果我理解你,你想要计算每个对象的每个实例。我会使用post_init signal来做 - 如果你不介意它不是装饰者。

这是我写的代码 - 使用post_save而不是post_init:

def thumb_init(sender, **kwargs):
    kwargs['instance'].process()
    kwargs['instance'].make_thumbnail()

post_init.connect(thumb_init, sender=Thumbnail) 
post_init.connect(thumb_init, sender=<otherModel here>)