Django graphql graphene удаляет лишние запросы из возвращаемого значения - PullRequest
0 голосов
/ 15 октября 2018

Последние несколько дней я прочитал так много графиков, что больше не вижу деревьев из леса.

Результаты, которые этот человек получил в начале, - почти то, что я хочу (его проблема, а не его решение), но кажется, что большая часть кода устарела, и я не могу его получитьработает: ссылка

У меня есть куча контейнеров, которые я возвращаю.Все контейнеры имеют суммы на каждый день в них.Я только хочу вернуть суммы за определенный день.

В настоящий момент я возвращаю эти результаты (день), но все другие результаты (дни) также возвращаются со значением Null.

Текущее поведение:

{
  "data": {
    "listProductcontainers": [
      {
        "id": "1",
        "productid": {
          "productid": "CBG2",
          "processedstockamountsSet": [
            {
              "timeStampID": {
                "id": "2"
              },
              "id": "77745",
              "prodName": {
                "productid": "CBG2"
              }
            },
            {
              "timeStampID": null,   <--------
              "id": "89645",
              "prodName": {
                "productid": "CBG2"
              }
            },
            {
              "timeStampID": null,   <--------
              "id": "89848",
              "prodName": {
                "productid": "CBG2"
              }
            },

// ...

Запрошенное поведение: (Все значения с 'Null' не должны возвращаться)

{
  "data": {
    "listProductcontainers": [
      {
        "id": "1",
        "productid": {
          "productid": "CBG2",
          "processedstockamountsSet": [
            {
              "timeStampID": {
                "id": "2"
              }

Мой запрос, который я выполняю, выглядит следующим образом:

query{
  listProductcontainers{
    id
    productid{
      productid
      processedstockamountsSet{
        timeStampID(id:2){
          id
        }
        id
        prodName{
          productid
        }
      }
    }
  }
}

Вот соответствующий код длярезультаты:

class TimeStampType(DjangoObjectType):
    class Meta:
        model = TimeStamp

class ProcessedStockAmountsType(DjangoObjectType):
    timeStampID = graphene.Field(TimeStampType, id=graphene.Int())
    class Meta:
        model = ProcessedStockAmounts 

    def resolve_timeStampID(self, info, **kwargs):
        id = kwargs.get('id')
        if self.timeStampID.id == id:
            return self.timeStampID

class ProductcontainersType(DjangoObjectType):
    class Meta:
        model = Productcontainers 

class ProductlistType(DjangoObjectType):
    class Meta:
        model = Productlist 

class Query(graphene.ObjectType):
    list_productcontainers = graphene.List(ProductcontainersType)

    def resolve_list_productcontainers(self, context, **kwargs):
        return Productcontainers.objects.all()

Я уже почти все прочитал в графене, но если у вас даже есть ссылка, которая отражает то, что я хочу сделать, я был бы очень признателен.

Мой последний вариант - сделать два вызова, где я получу все идентификаторы контейнеров, и еще один вызов, где я получу все суммы (с идентификатором контейнера) за определенную дату, а с 2 для циклов я просто добавляюскладывается в соответствующий контейнер ...: (

...