Прежде всего об ошибках: в заявлении «если» вы пытаетесь найти пользователя по первичному ключу сообщения.Более того, вы выполняете поиск как по id, так и по pk, хотя они технически одинаковы в вашем случае.См .: Запросы Django - id против pk
Что касается реализации: я боюсь, что в вашей реализации невозможно отследить "читеры".Вы не можете понять, что «Этот пользователь уже понравился этот пост», не сохраняя лайки.Нет данных, подтверждающих этот факт.С частью «остальное» все в порядке, но если вы хотите отследить «likers», вам понадобятся некоторые настройки.
Самый простой вариант - добавить поле ManyToMany, ссылающееся на User, к вашей модели Post и назвать его «likers».Таблица с колонками «user_id», «post_id» будет создана под капотом и скажет, что «Этому пользователю понравился этот пост».
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
...
likers = models.ManyToManyField(User)
...
А на ваш взгляд liked_post.likers.add(request.user)
, чтобы добавить текущего пользователялюбителям и liked_post.likers.filter(user=request.user).exists()
найти "читеров"