Вы можете добавить IntegerField
к вашей Music
модели с именем page_views
:
class Music(models.Model):
...
page_views = IntegerField(default=0)
Затем, заимствуя у этот ответ , вы можете увеличить views
для отдельного человека. song
из вашего detail
представления всякий раз, когда запрашивается страница:
def detail(request, slug):
latest_posts = Music.objects.order_by('-uploaded_date')[:5]
song = get_object_or_404(Music, slug=slug)
comments = Comment.objects.filter(post=song)
if request.method == 'POST':
comment_form = CommentForm(request.POST or None)
if comment_form.is_valid():
comment = comment_form.save(commit=False)
comment.post = song
comment.save()
return HttpResponseRedirect(song.get_absolute_url())
else:
comment_form = CommentForm()
song.update(page_views=F('page_views') + 1) # Add this line here so it's not updated on POST
context = {
'latest_posts': latest_posts,
'song': song,
'comments': comments,
'comment_form': comment_form,
}
return render(request, 'music/detail.html', context)
Обратите внимание, что вы, возможно, не захотите считать кого-то, добавляющего комментарий через форму, в качестве другого представления для страницы, поэтому до Вы, как вы определяете, когда счет на самом деле увеличивается. Это просто базовый c способ подсчета количества запросов страницы.