django详细信息视图的页面视图计数

时间:2020-09-08 13:56:30

标签: django django-models django-rest-framework django-views

我想获取详细信息页面的视图数,虽然确实可以,但是我有一个问题,每次刷新页面时,视图数都会增加。 我希望每个用户的视图只增加一次,而不是每次页面刷新时都增加访问次数。

model:
class Product(models.Model):
    name = models.CharField(max_length=300)
    create = models.DateTimeField(auto_now_add=True)
    update = models.DateTimeField(auto_now=True)
    slug = models.SlugField(unique=True)
    information = models.TextField(blank=True, null=True)
    views = models.IntegerField(null=True, blank=True, default=0)
    
view:
def details(request, id):
     product_view = Product.objects.get(id=id)
     product_view.views = product_view.views  + 1
     product_view.save()
     return render(...) 

1 个答案:

答案 0 :(得分:0)

您创建一个ManyToMany字段。当用户查看页面时,可以将视图添加到用户的ManyToMany并增加视图。如果这种关系已经存在(意味着他们之前已经访问过该页面),则无需计算该视图,因此将创建一个唯一的视图。

注意:我很肯定那里有更好的解决方案,但这是一个开始!