Я делаю функцию кнопки "нравится" и "не нравится" для блог-проекта Django. (Я начинающий).

Я пытаюсь сделать кнопку "нравится", которая также функционирует как "не нравится", если на нее нажать еще раз тем же пользователем. Один пользователь может поставить лайк нескольким постам, но только один раз, следующее нажатие не нравится.

Что я сделал: Я создал модель Like в своем приложении.

class Like(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    timeStamp = models.DateTimeField(auto_now_add=True)

Далее я сделал представление post_detail, чтобы проверить, понравилось ли уже пользователю или нет.

def post_detail(request, id):
post = get_object_or_404(Post, pk=id)
user_likes_this = post.like_set.filter(user=request.user) and True or False

Чтобы увеличить количество лайков, я сделал это в просмотре.

def like(request, post_id):
    new_like, created = Like.objects.get_or_create(user=request.user, post_id=post_id)

    if not created:
        messages.error(request, "Alread liked the post.")
    else:
        messages.success(request, "Liked successfully")

Я не понимаю, как вызвать функцию и использовать ее на кнопке like. Пожалуйста, помогите мне так, чтобы новичок мог понять и реализовать.

Вернуться на верх