Агрегирование полей в графене / django запросов - PullRequest
0 голосов
/ 28 апреля 2020

Я пишу графен / django ORM-запрос, в котором мне нужно объединить значения определенного поля для всех объектов результата моего запроса и вернуть его вместе с запросом. Не совсем уверен, как это сделать, так как это требует некоторой постобработки. Был бы признателен, если кто-то может предложить некоторые рекомендации.

Вот пример кода. Django Класс модели 'Market' имеет целочисленное поле 'num_vendors'. Графеновая оболочка 'MarketNode' охватывает модель класса Market:

Класс модели:

class Market(models.Model):
       num_vendors = models.IntegerField(....)

Класс графена:

class MarketNode(DjangoObjectType):
   Meta:
      model: Market

Я бы например, запрос на возврат 'market_count' (существует несколько рынков) и 'vendor_count' (сумма всех 'vendors' на всех рынках). Таким образом, запрос будет выглядеть следующим образом:

allMarkets {
  market_count
  vendor_count
  edges {
    node {
      ...
      ...
      num_vendors
      ...
    }
  }
}

Для market_count я следую этому примеру (это прекрасно работает): https://github.com/graphql-python/graphene-django/wiki/Adding-counts-to-DjangoFilterConnectionField

Для vendor_count (через все рынки), я предполагаю, что мне нужно перебрать результаты и добавить все поля num_vendors после того, как запрос будет завершен и решен. Как мне этого добиться? Это должно быть довольно распространенным случаем, так что я уверен, что графен предоставляет некоторые крючки для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...