问个 sqlalchemy 排序的问题。。。

2018-04-19 10:27:53 +08:00
 xiaobai9927

新手。。。

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()

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

求大神看看!

1756 次点击
所在节点    问与答
3 条回复
pktangyue
2018-04-19 11:22:15 +08:00
Lists = Film.query.outerjoin(ReleaseDate).order_by(ReleaseDate.release_dat.desc()).all()
xiaobai9927
2018-04-19 11:30:31 +08:00
@pktangyue 你这个跟我写的是一个意思啊。。。而且这样写,返回的 Film 只有几个,不是所有的 Film。。。
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()

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/448055

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX