разбить подзапрос в колбе - PullRequest
0 голосов
/ 08 октября 2019

Это сокращенная версия проблемы, опубликованной в Странное поведение для разбивки на страницы при разбивке на подзапросы в колбе .

Мне нужно разбить на страницы результат следующего запроса и отобразить результаты:

sub = db.session.query(Magazine).join(Magazine.subscribers).filter(User.id == 2).subquery()
subscribers = db.session.query(User).select_from(sub).join(Magazine.subscribers)

и я пытаюсь сделать это с помощью следующего кода:

page=request.args.get('page', 1, type=int)
friends=subscribers.paginate(page, 3, False)
next_url=url_for('index', page=friends.next_num) if friends.has_next else None
prev_url=url_for('index', page=friends.prev_num) if friends.has_prev else None
return render_template("index.html", title="My friends", friends=friends.items, next_url=next_url, prev_url=prev_url)

Это дает странный результат. Для начала он возвращает только 2 результата, когда задаются 3, а friends.has_next имеет значение false, когда оно должно быть истинным (в базе данных больше элементов). В Странное поведение при разбивке на страницы для подзапроса в колбе есть больше деталей, а также тест, который я запускаю. Я подозреваю, что ошибка исходит из подзапроса. Я упускаю что-то очевидное ?? !!!

В следующем примере я работаю с некоторыми «поддельными» данными в оболочке фляги:

>>> sub = db.session.query(Magazine).join(Magazine.subscribers).filter(User.id == 2).subquery()
>>> subscribers = db.session.query(User).select_from(sub).join(Magazine.subscribers)
>>> friends=subscribers.paginate(1, 3, False)
>>> subscribers.all()
[<User 2>, <User 3>, <User 4>, <User 5>, <User 6>]
>>> friends.items
[<User 2>, <User 3>]
>>> friends.has_next
False
>>> friends.has_prev
False

Любые идеи?

...