[英]How can I get a sqlalchemy relationship to update the order_by?
数据库 Model:
class Facility(db.Model):
__tablename__ = "facility"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.now())
updated_at = db.Column(db.DateTime, nullable=True)
contacts = relationship(
"Contact",
secondary="facility_contact",
order_by="desc(Contact.created_at)"
)
Api 端点与 Flask-Restful:
class FacilityPersonnelEndpoint(Resource):
def __init__(self):
self.parser = reqparse.RequestParser()
self.parser.add_argument("facility_id", type=str)
self.parser.add_argument("order_by", type=str)
self.parser.add_argument("group_by", type=str)
super(FacilityPersonnelEndpoint, self).__init__()
def get(self) -> dict:
args = self.parser.parse_args()
facility = Facility.get_id(args["facility_id"])
if not facility:
return { "error": "Facility Personnel not found." }, 404
return facility.contacts, 200
我希望能够在端点中执行类似下面的伪代码的操作,但我似乎找不到任何使这成为可能的文档。
order = args["order_by"]
group = args["group_by"]
sort = "{0}(Contact.{1})".format(order_by, group_by)
Facility.contacts.order_by(sort)
或将关系称为 model 中的 function?
@classmethod
def get_ordered_contacts(cls, order_by, group_by):
sort = "{0}(Contact.{1})".format(order_by, group_by)
contacts = relationship(
"Contact",
secondary="facility_contact",
order_by=sort
)
return contacts
是否可以以某种方式在 model 中进行设置,还是我需要在端点中使用查询? 还是我只需要在从数据库中提取记录后进行排序?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.