Порядок SQLAlchemy по гибридному свойству, которое ссылается на отношения
Мои модели SQLAlchemy:
class Cover(db.Model):
# ... a bunch of other fields ...
@hybrid_property
def number_of_requests(self):
if self.requests:
return len(self.requests)
return 0
@number_of_requests.expression
def number_of_requests(cls):
return func.count(cls.requests)
class Request(db.Model):
# ... a bunch of other fields ...
# Cover that this request is requesting
cover_id = db.Column(db.Integer, db.ForeignKey('cover.id')
cover = db.relationship('Cover',
backref=backref("requests", cascade="all, delete-orphan"))
Итак, простые отношения один-ко-многим между Cover и Request.number_of_requests
Гибридное свойство должно возвращать количество запросов, связанных с этим конкретным покрытием.
Теперь на одном из моих маршрутов Flask я пытаюсь получить 5 лучших обложек по количеству запросов. Вот как это выглядит сейчас:
# Get top cover requests
covers = Cover.query.order_by(Cover.number_of_requests).limit(5).all()
К сожалению, это дает
ProgrammingError: (ProgrammingError) отсутствует запись в предложении FROM для таблицы "request"
Я подозреваю, что это потому, что вnumber_of_requests(cls)
Я пытаюсь посчитать размерrequests
список, но SQLAlchemy не включил таблицу запросов в исходный запрос. Любые идеи о том, как сделать это, чтобы избежать этой ошибки?