Как вернуть список QuerySets в запросе graphql как отдельные элементы списка? - PullRequest
0 голосов
/ 04 июля 2019

Проблема, с которой я сталкиваюсь, состоит в том, что у меня есть custom_filter из MyModel, которые возвращают список <QuerySet> как

[<QuerySet [<MyModel: xyz>]>, <QuerySet [<MyModel: xyz>, <MyModel: xyz>,<MyModel: xyz>]>]

Тип объекта

class MyModelNode(DjangoObjectType):
    class Meta:
        model=MyModel
        filter_fields=['id]
        interfaces = (graphene.relay.Node,)


Запрос

class Query(graphene.ObjectType):
   my_model_items = graphene.List(MyModelNode)

   def resolve_my_model_items(self, info, **kwargs):
      my_model_filtered_items = MyModel.objects.custom_filter(kwargs)
      # my_model_filtered_items holds the list of querysets
      return my_model_filtered_items

Как обрабатывать список наборов запросов.Графический ответ на запрос должен давать список, в котором наборы запросов являются элементами.

[
  {
  //These are from first <QuerySet>
  "myModelItems":[
      {
        "fieldsIaskedFor":"response"
      }
    ]

  },


  {
  //These are from second <QuerySet>
  "myModelItems":[
      {
        "fieldsIaskedFor":"resp"
      },
      {
        "fieldsIaskedFor":"resp"
      },
      {
        "fieldsIaskedFor":"resp"
      },
    ]

  },


]

Как получить результаты различных наборов запросов в отдельных элементах списка?Число <QuerySet> не является фиксированным.

Что мне нужно сделать, чтобы добиться этого?.

1 Ответ

0 голосов
/ 04 июля 2019

Это можно сделать, создав два типа объектов и просто вложив один в другой.

Первый тип объекта будет DjangoObjectType из MyModel

class DjangoMyModelNode(DjangoObjectType):
    class Meta:
        model = MyModel
        filter_fields = ['id']
        interfaces = (graphene.relay.Node,)

ВторойТип объектов будет пользовательским

...