Присоединиться и заказать по полю на одном столе - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть модель в приложении Flask:

class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)
    is_income = db.Column(db.Boolean, nullable=False)

    parent_id = db.Column(db.Integer, db.ForeignKey("category.id"), nullable=True)
    parent = db.relationship("Category", uselist=False, lazy=True)

Я пытаюсь выбрать все категории с предварительно загруженным полем parent и отсортировать по родительскому имени и названию категории.В Django я могу сделать это с помощью одной строки кода:

Category.objects.select_related("parent").order_by("parent__name", "name")

Я новичок в SQLAlchemy и не знаю, как это сделать правильно.Я узнаю, как предварительно загрузить parent поле:

Category.query.options(joinedload(Category.parent)).order_by(Category.name)

Но я не знаю, как отсортировать запрос по полю parent.name.Кто-нибудь знает как это сделать?Самая большая проблема в том, что parent может быть нулевым.

...