在同一表上按字段联接和排序

时间:2019-09-24 14:48:09

标签: python sqlalchemy flask-sqlalchemy

我在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可以为空。

0 个答案:

没有答案