在 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'

感谢您的指导。 谢谢。

您应该重写视图类get_object()方法来递增计数器:

class AuctionItemDetailView(DetailView):
model = AuctionItem
def get_object(self, queryset=None):
item = super().get_object(queryset)
item.incrementViewCount()
return item

直接在 views.py 中进行增量。

class AuctionItemDetailView(DetailView):
model = AuctionItem
def get_object(self, queryset=None):
item = super().get_object(queryset)
item.viewCount += 1
item.save()
return item

最新更新