Django DetailView 中的增量视图计数

Increment view count in Django DetailView

我正在创建我自己的类似于 eBay 的小型拍卖风格应用程序,我只是想增加我设置的 viewCount 变量,并将该值显示为页面被查看的次数。

在 views.py 文件中,因为我有对我的模型的引用,所以我想我可以这样调用 model.py 中的 incrementViewCount():

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'

非常感谢您的指导。 谢谢

您应该覆盖您的视图 class get_object() 方法来增加计数器:

class AuctionItemDetailView(DetailView):
    model = AuctionItem

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