Социальный блог Кнопка 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()
попробуйте этот способ