Puedes hacer un método llamado add_visit() en el modelo Article
Código Python:
Ver originalclass Article(models.Model):
...
visits_count = models.IntegerField(default=0)
...
def add_visit(self):
if self.visits_count is not None:
self.visits_count += 1
else:
self.visits_count = 0
Y el detail view.
Código Python:
Ver originalfrom django.views.generic.detail import DetailView
from articles.models import Article
class ArticleDetailView(DetailView):
model = Article
def get_context_data(self, **kwargs):
context = super(ArticleDetailView, self).get_context_data(**kwargs)
self.object.add_visit()
self.object.save()
return context
Obviamente lo primero que tienes que hacer es definir el concepto de visita.
Que tal si hago 10 visitas con la misma ip?, que tal si solo veo 10 segundos de video y lo cierro? una petición get y una petición post son iguales? Que tal si tienes 2 visitas al mismo tiempo como manejas que sea thread safe?