#python #django #graphene-django
#python #django #graphene-django
Вопрос:
В graphene-django у меня есть ограничение на разбивку на страницы, установленное в моем settings.py
файле, как показано ниже.
GRAPHENE = {
'RELAY_CONNECTION_MAX_LIMIT': 150,
}
Допустим, конкретный запрос возвращает 200 элементов (я не знаю заранее), и я хочу отобразить все эти данные на графике. Как мне запретить графену разбивать его на страницы при возврате результатов?
Ответ №1:
Вы можете переопределить max_limit
аргумент для каждого DjangoFilterConnectionField
в отдельности. Установка этого значения в None
основном отключает ограничивающее поведение.
Предположим, у вас есть следующий запрос для UserNode
класса:
class UserQuery(graphene.ObjectType):
all_users = DjangoFilterConnectionField(UserNode, max_limit=None)
max_limit
Параметр будет внутренне обрабатываться системой DjangoConnectionClass
, которая обеспечивает ограничивающее поведение с помощью указанной настройки RELAY_CONNECTION_MAX_LIMIT
Однако имейте в виду, что это может привести к серьезным проблемам с производительностью в случае очень больших или дорогостоящих запросов. Лично я бы, вероятно, выбрал либо очень высокий, но все же приемлемый предел в зависимости от ваших данных, либо предпочтительно рассмотреть возможность реализации правильного поведения разбивки на страницы на стороне клиента.
Комментарии:
1. Спасибо за предложение. Но мне кажется, что лучший способ действий — создать отдельную конечную точку, которая не проходит через класс connection.
2. Разве это не работает вокруг основной идеи GraphQL? Особенно в
relay
среде, где вы, скорее всего, хотите иметь единый API сedges
и т.д.nodes
3. Это так. Но я буду придерживаться этого пока, пока не смогу найти то, что ищу.