Увеличение количества просмотров в Django DetailView - PullRequest
1 голос
/ 12 января 2020

Я работаю над созданием своего собственного маленького приложения в стиле аукциона, похожего на eBay, и просто пытаюсь увеличить установленную переменную viewCount и отображать это значение как количество просмотров страницы.

В файле views.py, поскольку у меня есть ссылка на мою модель, я подумал, что мог бы вызывать incrementViewCount () в model.py следующим образом:

views.py

class AuctionItemDetailView(DetailView):
    model = AuctionItem
    model.incrementViewCount()

model.py

viewCount = models.IntegerField(default=0)

def incrementViewCount(self):
    self.viewCount += 1
    self.save()

Сообщение об ошибке в консоли выглядит следующим образом:

TypeError: incrementViewCount() missing 1 required positional argument: 'self'

Буду признателен за ваше руководство. Спасибо.

1 Ответ

2 голосов
/ 12 января 2020

Вы должны переопределить ваш класс представления get_object() метод, чтобы увеличить счетчик:

class AuctionItemDetailView(DetailView):
    model = AuctionItem

    def get_object(self, queryset=None):
        item = super().get_object(queryset)
        item.incrementViewCount()
        return item
...