V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaobai9927
V2EX  ›  问与答

问个 sqlalchemy 排序的问题。。。

  •  
  •   xiaobai9927 · 2018-04-19 10:27:53 +08:00 · 1723 次点击
    这是一个创建于 2409 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新手。。。

    class Film(db.Model):

      id = db.Column(db.Integer, primary_key=True)
    
      name = db.Column(db.String(500))
    
      。。。
    
      releasedate = db.relationship('ReleaseDate', backref='Film', lazy='dynamic')
    

    class ReleaseDate(db.Model):

      __tablename__ = 'releasedate'
    
      id = db.Column(db.Integer, primary_key=True)
    
      release_date = db.Column(db.String(100))
    
      release_address = db.Column(db.String(100))
    
      film_id = db.Column(db.Integer, db.ForeignKey('film.id'))
    

    想要这样的结果:对 Film 排序,安照 ReleaseDate.release_date 排,即时间顺序,但是一对多的关系,如果 ReleaseDate 有多个,那么选其中日期最早的一个排。

    我只能写这样的:Lists = Film.query.outerjoin(ReleaseDate).order_by(db.desc(ReleaseDate.release_dat)).all()

    排序那边不知道怎么写了。。。

    求大神看看!

    3 条回复    2018-04-19 12:16:07 +08:00
    pktangyue
        1
    pktangyue  
       2018-04-19 11:22:15 +08:00
    Lists = Film.query.outerjoin(ReleaseDate).order_by(ReleaseDate.release_dat.desc()).all()
    xiaobai9927
        2
    xiaobai9927  
    OP
       2018-04-19 11:30:31 +08:00
    @pktangyue 你这个跟我写的是一个意思啊。。。而且这样写,返回的 Film 只有几个,不是所有的 Film。。。
    pktangyue
        3
    pktangyue  
       2018-04-19 12:16:07 +08:00
    哦,没看清楚你的需求,这种情况 group_by 和 distinct 下就可以了
    Lists = Film.query.outerjoin(ReleaseDate).group_by(Film.id).order_by(ReleaseDate.release_dat.desc()).distinct().all()
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5320 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:05 · PVG 17:05 · LAX 01:05 · JFK 04:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.