在Flask-sqlalchemy

时间:2016-01-30 00:00:41

标签: flask sqlalchemy 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)

我使用以下查询获取所有属性: 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中执行此操作?任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

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

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