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