Я использую Flask-SQLAlchemy для создания блоговых сообщений.
Я пытаюсь упорядочить записи блога на основе общего количества лайков, полученных каждым постом в блоге.Я попытался использовать гибридное свойство SQLALchemy с запросом session.query(Post).order_by(Post.likes_count.desc()).all()
, которое похоже на решение вопроса, заданного ранее здесь
Выдает ошибку AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Post.likes has an attribute 'count'
Есть лиспособ получить порядок сообщений, используя счетчик лайков, который необходимо передать функции разбивки на страницы.
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20))
email = db.Column(db.String(120))
likes = db.relationship('Like', backref='user',lazy='dynamic',foreign_keys='Like.user_id')
def __repr__(self):
return f"User('{self.username}', '{self.email}')"
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
date_posted = db.Column(db.DateTime, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
likes = db.relationship('Like', backref='post', lazy='dynamic')
@hybrid_property
def likes_count(self):
return self.likes.count()
def __repr__(self):
return f"Post('{self.title}', '{self.date_posted}')"
class Like(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
Этот вопрос похож на Как упорядочить по количеству отношений многие ко многим в SQLAlchemy? Однако мне не удалось получить результаты запроса с помощью метода len
или count()
, упомянутого в ответе / комментарии.