Так что я пытаюсь добавить, чтобы добавить функцию кнопки «Мне нравится» в мой код, которая позволяет пользователям нравится определенные сообщения.Лайки будут привязаны к зарегистрированному пользователю, и будет показано количество лайков.Реализация переднего конца не будет трудной, но у меня возникла проблема с задним концом.
Я использую этот пост здесь как руководство, которое вместо этого использует систему последователей
Это то, что у меня есть?
Я создал таблицу для лайков в models.py:
likers = db.Table('likers',
db.Column('liker_id', db.Integer, db.ForeignKey('post.id')),
db.Column('liked_id', db.Integer, db.ForeignKey('post.id'))
)
В моем Models.py для моего пользовательского класса:
class User(db.Model, UserMixin):
#Code
liked = db.relationship(
'User', secondary=likers,
primaryjoin=(likers.c.liker_id == id),
secondaryjoin=(likers.c.liked_id == id),
backref = db.backref('likers', lazy='dynamic'), lazy='dynamic')
def like(self, post):
if not self.is_liking(post):
self.liked.append(post)
def unlike(self, post):
if self.is_liking(post):
self.liked.remove(post)
def is_liking(self, post):
return self.liked.filter(
likers.c.liked_id == post.id).count() > 0
в моем rout.py- для моего проекта пользователя у меня есть:
@users.route("/like/<int:post_id>")
@login_required
def like(post_id):
post = Post.query.get_or_404(post_id)
current_user.like(post)
db.session.commit()
flash('Post has been liked')
return redirect(url_for('posts.post', post_id=post.id))
@users.route("/unlike/<int:post_id>")
@login_required
def unlike(post_id):
post = Post.query.get_or_404(post_id)
current_user.unlike(post)
db.session.commit()
flash('Post has been unliked')
return redirect(url_for('posts.post', post_id=post.id))
Что я делаю не так?Я продолжаю получать ошибки, такие как:
builtins.KeyError
KeyError: 'likers'
Я сделал раздел комментариев, и я знаю, что отношение к лайкам будет одинаковым с комментариями, но я изо всех сил пытаюсь это реализовать.Я относительно новичок в колбе, и я пытался использовать документацию, но не нашел ничего, что могло бы мне помочь ...
Это моя последняя надежда.