Jak stronicować w Flask-SQLAlchemy dla połączonych zapytań db.session?

Powiedzmy, że mamy następujące relacje:

osoba może mieć wiele adresów e-maildostawca usług e-mail może (oczywiście) obsługiwać wiele adresów e-mail

Tak więc jest to relacja wiele do wielu. Mam trzy tabele: e-maile, dostawcy i użytkownicy. E-maile mają dwa obce identyfikatory dla dostawcy i użytkownika.

Teraz, podając konkretną osobę, chcę wydrukować wszystkich dostawców poczty e-mail i adres e-mail, który hostuje dla tej osoby, jeśli istnieje. (Jeśli dana osoba nie ma wiadomości e-mail w Gmailu, nadal chcę, aby Gmail znalazł się w wyniku. Wierzę, że w przeciwnym razie potrzebuję tylko lewego połączenia wewnętrznego, aby rozwiązać ten problem.)

Odkryłem, jak to zrobić w następujących podkwerendach (po samouczku sqlalchemy):

email_subq = db.session.query(Emails).\
                filter(Emails.user_id==current_user.id).\
                subquery()

provider_and_email = db.session.query(Provider, email_subq).\
                outerjoin(email_subq, Provider.emails).\
                all()

To działa dobrze (zwraca 4 krotki(Provider, user_id, provider_id, email_address), wszystkie informacje, które chcę), ale później dowiedziałem się, że tak jestnie za pomocą kolbyBaseQuery klasa, takpagination dostarczone przez Flask-SQLAlchemy nie działa. Widoczniedb.session.query() nie jest instancją kwerendy Flask-SQLAlchemy.

Próbowałem to zrobićEmails.query.outerjoin[...] ale zwraca tylko kolumny w tabeli e-mail, chociaż chcę zarówno informacje o dostawcy, jak i e-maile.

Moje pytanie: jak mogę zrobić to samo z Flask-SQLAlchemy, aby nie musiałem ponownie implementować paginacji, która już istnieje?

Myślę, że najprostszą opcją w tym momencie jest zaimplementowanie mojej własnej funkcji stronicowania, ale chciałbym wiedzieć, czy istnieje innawłaściwy sposób na to.

questionAnswers(7)

yourAnswerToTheQuestion