Моя модель, как этоСтруктурированные запрос по М к М в ОПРС
- Club
- Пользователь
- курс
- ссылка на клуб (ключ)
- Session
- ссылка на курс (ключ)
- ClubMembership
- ссылка на клуб (ключ)
- ссылки на (ключ)
- CourseSubscription
- ссылки на курс пользователя (ключ)
- ссылка на пользователя (ключ)
Теперь я хочу, чтобы все course
S я подписался, имея в качестве входных club
и user
, что я сделал это:
courses = Courses(Courses.club == club.key).fetch(keys_only=True)
real_list = []
for course in courses:
if CourseSubscription.get_by_id(user, course):
real_list.append(course)
sessions = Session.query(Session.course.IN(real_list),Session.start_date >= start_date).fetch()
для CourseSubscription Я использовал это https://stackoverflow.com/a/26746542/1257185, вот почему я могу сделать if (еще дорого)
есть ли лучший способ сделать это? по крайней мере, дешевле. Я думал о gql, но потом у меня есть список IN
. вероятно smt like: select key from courseSubscription, where course.club = {clubid} and user = {user}
, а затем ndb_get_multi
чтобы загрузить результаты запроса? это возможно как-то?
GQL не предоставляет * никакой * дополнительной функциональности или эффективности по сравнению с db/ndb. –
, так есть ли лучшее решение (в NDB), чем тот, который я сделал? – EsseTi