Frage

Die Seite nutzt zwei Objekte - Artikel und Blogs. Jedes Mal, wenn ein Artikel oder Blog angesehen wird, soll ein verwandter Zähler um eines erhöht.

Die Idee ist es, eine „Top Ten“ Anwendung, die die „Popularität“ des Artikels und Einträge misst.

Weil ich mehr als ein Objekt verwendet wird, würde Ich mag das Tracker-Modell ein genericForeignKey auf die verwandten Objekte zu verwenden.

#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

Ich möchte einen Dekorateur schreiben, die eine View-Funktion Wraps, aber es könnte nicht notwendig sein.

Danke

War es hilfreich?

Lösung

Wenn ich verstehe, dass Sie sich wünschen Sie jede Instanziierung jedes Objekt zu zählen. Ich würde es tun, indem sie mit einem post_init Signal - wenn es Ihnen nichts ausmacht, dass es nicht ein Dekorateur ist.

Hier ist ein Code, schrieb ich - mit post_save statt 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>)  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top