Как мне изменить ограничение подключения к реле в graphene django

#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. Это так. Но я буду придерживаться этого пока, пока не смогу найти то, что ищу.