繁体   English   中英

如何获得 sqlalchemy 关系来更新 order_by?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM