【问题标题】:flask_mongo_engine how to paginate order by create_time desc?flask_mongo_engine 如何按 create_time desc 对订单进行分页?
【发布时间】:2018-09-26 14:31:12
【问题描述】:
class Session(db.DynamicDocument):
    title = db.StringField(required=False)
    created = db.FloatField(required=True)
    source = db.StringField()

@app.route('/page/<int:page>')
def sessions(page):
    return jsonify(Session.objects.paginate(page=page, per_page=5).items)

响应是按 ASC 排序的 dict 列表,默认情况下第一页包含最旧的文档。

那么如何得到desc排序结果呢?

【问题讨论】:

    标签: mongodb flask flask-mongoengine


    【解决方案1】:

    只需在 paginate() 之前添加order_by()

    键可以用+或-作为前缀来确定排序方向

    只是一个例子:

    class Session(db.DynamicDocument):
        create_time = db.DateTimeField(required=True)
    
    # clean before test
    for i in Session.objects.all():
        i.delete()
    
    for i in range(20):
        create_time = datetime.now()
        create_time = create_time.replace(year=2000 + i)
        ses = Session(create_time=create_time)
        ses.save()
    
    print('2000 -> 2009')
    items = Session.objects.order_by('create_time').paginate(page=1, per_page=10).items
    for i in items:
        print(i.create_time)
    
    print('2019 -> 2010')
    items = Session.objects.order_by('-create_time').paginate(page=1, per_page=10).items
    for i in items:
        print(i.create_time)
    

    希望这会有所帮助。

    【讨论】:

    • 真的很有帮助! -+ 快捷键
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2019-01-20
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多