Я использую очень простые модели отсчета числа попаданий в Django
.Класс атрибута класса Django и свойство экземпляра?
models.py
from django.db import models
from model_utils.models import TimeStampedModel
from posts.models import Post
class PostHit(TimeStampedModel):
post = models.ForeignKey(Post, related_name='post_hits')
num_of_hit = models.IntegerField()
class Meta:
verbose_name_plural = "Post hits"
def __str__(self):
return self.post.title
def increase_hit(self):
self.num_of_hit += 1
views.py
from django.views.generic.detail import DetailView
from django.core.exceptions import ObjectDoesNotExist
from posts.models import Post, PostHit
from posts.forms import CommentForm
class PostDetailView(DetailView):
model = Post
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(**kwargs)
context['category'] = self.kwargs['category']
context['form'] = CommentForm()
context['tracking_hit_post'] = self.tracking_hit_post()
return context
def tracking_hit_post(self):
post = self.model.objects.get(pk=self.object.id)
post_hit = PostHit.objects.filter(post=post).first()
if post_hit:
post_hit.increase_hit()
else:
post_hit = PostHit.objects.create(
post=post,
num_of_hit=1
)
print(post_hit.num_of_hit)
return post_hit.num_of_hit
После PostHit
экземпляр создан, он называет increase_hit()
каждый раз, когда я посещаю DetailVie
.
Но это не увеличивает правильный путь.
Сначала он печатает 1. И когда я обновляю страницу, она печатает 2. При следующем обновлении он снова печатает 2. Это больше не увеличивается после 2.
Что не так с моим кодом? Я неправильно понял атрибут класса и свойство экземпляра?
Большое вам спасибо! – user3595632