Как увеличить значение и атрибут в моей модели в Django? - PullRequest
0 голосов
/ 05 мая 2019

Я хочу сделать кнопку лайков, когда одним нажатием кнопки свойство лайков модели увеличивается на единицу.Модель выглядит следующим образом:

class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length = 200)
    text = models.TextField()
    created_date = models.DateTimeField(default = timezone.now)
    likes = models.IntegerField(default=0)
    tags = models.CharField(max_length = 50, default = '' )

    def process_likes(self):
        print(self.likes)
        self.likes += 1

    def split_tags(self):
        return self.tags.split()

    def get_absolute_url(self):
        return reverse('blog:post_list')

    def __str__(self):
        return self.title

Функция из представления, в котором я вызываю метод, выглядит следующим образом:

def print_hi(request, pk):
    print('Hi there!')
    post = get_object_or_404(Post, pk=pk)
    post.process_likes()
    return redirect('blog:post_detail', pk=post.pk)

URL-адрес, соответствующий этой функции представления:

path('print/<int:pk>', views.print_hi, name='print_hi'),

И якорь, в котором я вызываю URL для вызова функции:

<a href="{% url 'blog:print_hi' pk=post.pk %}" class="btn">Soy un botón</a>

Метод process_likes отвечает за приращение счетчика лайков, но когда я вызываю функциюнажатие кнопки не увеличивает счет?Как я могу решить это?

1 Ответ

1 голос
/ 05 мая 2019

Вы должны сохранить post после звонка process_likes():

def print_hi(request, pk):
    print('Hi there!')
    post = get_object_or_404(Post, pk=pk)
    post.process_likes()
    post.save()
    return redirect('blog:post_detail', pk=post.pk)
...