@s_katala

Почему не работает счетчик просмотров?

class Post(models.Model):
  views = models.IntegerField(("View count"), default=0, editable=False)

  def viewed(self):
	 self.views += 1
	 self.save(update_fields=['views'])
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ответы на вопрос 2
@deliro
Твой вариант должен работать, но правильный вариант:
def viewed(self):
    type(self).objects.filter(id=self.id).update(views=F('views') + 1)
Ответ написан
@iriddy
Python, Ремонт и диагностика цифровой техники
Если ты уже работаешь с созданной бд, то возможно ты прибавляешь единицу к None. Добавь проверку на None:

class Post(models.Model):
    views = models.IntegerField(("View count"), default=0)

    def viewed(self):
       if self.views:
           self.views += 1
       else:
           self.views = 1
       self.save(update_fields=['views'])


Взгляни еще на параметр editable = False.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы