我有这两个模型(使用Flask SQLAlchemy定义):
class BankAccount(db.Model):
id = db.Column(db.Integer, primary_key=True)
customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'))
created_at = db.Column(db.DateTime)
class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128), index=True)
我使用以下查询参数的BankAccount Flask-Restless API端点没有问题:
http://mywebsite.com/api/bank_account?q={"order_by":[{"field":"created_at","direction":"asc"}]}
但是,我想按客户名称对这些结果(银行账户)进行排序,而customer是一个相关的模型,因此在BankAccount模型中没有customer_name这样的字段。
有什么简单的方法可以完成这项订购工作吗?在一些已知的Python ORM中,这可以通过使用"双下划线"来实现,类似于:
http://mywebsite.com/api/bank_account?q={"order_by":[{"field":"customer__name","direction":"asc"}]}
我也试过:
{"field":"Customer","direction":"asc"}
{"field":"customer","direction":"asc"}
{"field":"customer.name","direction":"asc"}
对于所有这些尝试,我得到的回复是:
{
"message" : "Unable to construct query"
}
有什么关于如何进行此查询的想法吗?还是使用Flask Restless根本不可能做到这一点?谢谢
您最好的选择可能是使用后处理器:
https://flask-restless.readthedocs.org/en/latest/customizing.html?highlight=order#request-预处理器和后处理器