Прежде всего, спасибо! Прошло 1 год без вопросов, так как я всегда находил ответ. Вы огромная помощь.
Сегодня у меня есть вопрос, который я не могу решить самостоятельно. Пожалуйста, я надеюсь, что вы будете любезны помочь мне в этом вопросе.
Контекст: Я работаю над проектом с Django framework и у меня есть несколько динамических c страниц сделано с реакции. js. API, который я использую между ними, основан на graphQL. Аполлон для клиента, графен - django для серверной части.
Я хочу создать динамические c страницы, сделанные из запроса GraphQL, имеющего набор (объявленное поле в классе DjangoObjectType, сделанное из Django query), и я хочу иметь возможность динамически фильтровать родительский элемент с аргументом A и набор с аргументом B. Моя проблема заключается в том, как найти способ передать аргумент B в набор для его фильтрации.
GraphQL, которого я достиг бы на основе документации по GraphQL
query DistributionHisto
(
$id:ID,
$limit:Int
)
{
distributionHisto(id:$id)
{
id,
historical(limit:$limit)
{
id,
date,
histo
}
}
}
Но я не понимаю, как передать (limit: $ limit) моему набору в серверной части.
Вот мой schema.py
import graphene
from graphene_django.types import DjangoObjectType
class DistributionType(DjangoObjectType):
class Meta:
model = DistributionTuple
historical = graphene.List(HistoricalTimeSeriesType)
def resolve_historical(self, info):
return HistoricalTimeSeries.objects.filter(
distribution_tuple_id=self.id
).order_by('date')[:2]
class Query(object):
distribution_histo = graphene.List(
graphene.NonNull(DistributionType),
id=graphene.ID(),
limit=graphene.Int()
)
def resolve_distribution_histo(
self, info, id=None, limit=None):
filter_q1 = {'id': id} if id else {}
return DistributionTuple.objects.filter(**filter_q1)
Я пробовал несколько вещей, но я не нашел способа заставить его работать до сих пор.
На данный момент, как вы видите, аргумент "limit" заходит в тупик в def resol *, где в идеале он будет передан классу DistributionSetHistoType, где он заменит срез [: 2] на [: limit] в resol_distribution_slice_set ()
Я надеюсь, что все ясно, пожалуйста, дайте мне знать если это не так.
Спасибо за вашу поддержку.