Порядок 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 не включил таблицу запросов в исходный запрос. Любые идеи о том, как сделать это, чтобы избежать этой ошибки?

Ответы на вопрос(1)

Ваш ответ на вопрос