Я хотел бы вернуть ретрансляционное соединение для запросов. Используя стандартный графен-sqlalchemy вы можете сделать это:
class Query(graphene.ObjectType):
node = relay.Node.Field()
all_users = SQLAlchemyConnectionField(User)
Для различных мест, где требуется более персонализированный поиск, самый простой подход - это специальный распознаватель:
class Query(graphene.ObjectType):
node = relay.Node.Field()
all_users = graphene.List(User)
def resolve_all_users(self, info, **args):
# Grab the root SQLAlchemy query
query = User.get_query(info)
return query.filter(
User.active,
# and possibly a whole bunch of other filters)
).options(joinedload(User.emails).all()
Это работает, но возвращает простой список пользователей без какой-либо поддержки пагинации или других уловок релейного соединения, обрабатываемых SQLAlchemyConnectionField. То, что я ищу, - это способ вернуть запрос, и он автоматически обрабатывается аналогично SQLAlchemyConnectionField.