flask_mongo_engine как разбить порядок на страницы с помощью create_time desc? - PullRequest
0 голосов
/ 26 сентября 2018
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)

Ответом является список dict, который упорядочен ASC, и на первой странице по умолчанию содержатся самые старые документы.

Так как получить результат заказа desc?

1 Ответ

0 голосов
/ 28 сентября 2018

Просто добавьте order_by () перед paginate ().

Клавиши могут иметь префикс + или - для определения направления заказа

Просто пример:

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)

Надеюсь, это поможет.

...