在 Flask-sqlalchemy 中获取排序结果

Pra*_*epb 3 sqlalchemy flask flask-sqlalchemy

我有一个 MySQL 数据库,下面是定义的两个模型。

class Agent(db.Model):
   id = db.Column(db.Integer, primary_key=True)
   email = db.Column(db.String(255), nullable=False, unique=True)
   premium_date = db.Column(db.DateTime, nullable=True)

class Property(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    agent_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    agent = db.relationship('Agent')
    title = db.Column(db.String(255), nullable=False)
Run Code Online (Sandbox Code Playgroud)

我使用以下查询获取所有属性: properties = models.Property.query.all()

和使用以下查询的 premium_date 代理: agents = models.Agent.query.filter(models.Agent.premium_date is not None).all()

但我想先显示拥有 premium(agent.premium_date) 的代理发布的属性,然后显示其余属性。(这就像优先考虑高级代理)。

注意:由于 premium_date 是可选的,一些代理不会是高级用户,因此该列将为空。

无论如何在 Flask-SQLAlchemy 中这样做?任何帮助都会很棒。

小智 6

您可以使用order_by(model.Agent.premium_date.desc())将所有具有溢价日期的代理排序到顶部,但是这也会按这些日期的降序对具有溢价日期的代理进行排序,这可能不是最佳的。

我认为,更好的选择是分别拉出两个列表,然后在 Python 中对它们进行排序和附加,而不是依赖 SQL 来完成。