Сайт использует 2 объекта - статьи и блоги. Каждый раз, когда просматривается статья или блог, связанный счетчик должен увеличиваться на единицу.Django Contenttypes and decorator
Идея состоит в том, чтобы иметь приложение «первой десятки», которое измеряет «популярность» статей и записей.
Поскольку я использую более одного объекта, я бы хотел, чтобы модель 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
Я хотел бы написать декоратор, который обертывает функцию просмотра, но это может быть необязательно.
Благодаря
так post_init посылается сигнал всякий раз, когда дб ударил с запросом для объекта? И, слушая и реагируя на сигнал с помощью счетчика, мы можем подсчитать, сколько раз конкретный экземпляр был создан в представлении. Потрясающие! –
Это не решение, но закрыть: сообщения post_init отправляются каждый раз, когда экземпляр происходит в администраторе; Мне нужно отслеживать только пользовательские представления. Я попробую сделать собственный сигнал. –
, на ваш взгляд, вы могли бы * пометить * объекты, которые были затронуты видом через обезьяньи патчи, такие как obj.touched = True. в сигнале u будет проверять его (и должен удалить его снова) – vikingosegundo