Социальный блог Кнопка Like

Кнопка Like не работает. вот мой код, пожалуйста, проверьте он выдает ошибку Не удается преобразовать ключевое слово 'username' в поле. Возможные варианты: id, post_id, post_id_id, user_id, user_id_id

view.py

def like_post(request):
    user_id = request.user.username
    post_id = request.GET.get('post_id')
    post = Post.objects.get(id=post_id)

    like_filter = LikePost.objects.filter(post_id=post_id,username=user_id).first()

    if like_filter == None:
        new_like = LikePost.objects.create(post_id=post_id, username=user_id)
        new_like.save()
        post.no_of_likes = post.no_of_likes+1
        post.save()
        return redirect('showpost.html')
    else:
        like_filter.delete()
        post.no_of_likes = post.no_of_likes-1
        post.save()
        return redirect('showpost.html')

model.py

class LikePost(models.Model):
    post_id = models.ForeignKey(Post,on_delete=models.CASCADE, null=True)
    user_id = models.ForeignKey(User,on_delete=models.CASCADE, null=True)
user_id = User.objects.get(id=request.user.pk)

Получите объект и передайте его для создания запроса, он будет работать, потому что ForeignKey принимает объект в зависимости от id или любого значения

Вам нужно изменить likefilter, поскольку в настоящее время вы пытаетесь получить LikePost с атрибутами post_id и user_id. У вас должно получиться что-то вроде:

like_filter = LikePost.objects.filter(post_id=post_id,user_id=user_id).first()

И я могу ошибаться, но кажется, что ваш user_id содержит значение имени пользователя вместо его id, так что вы также можете изменить это на:

user_id = request.user.id
user_id = request.user.pk
like_filter = LikePost.objects.filter(post_id=post_id, pk=user_id).first()

попробуйте этот способ

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