【问题标题】:How to return List of QuerySets in graphql query as separate list elements?如何将graphql查询中的查询集列表作为单独的列表元素返回?
【发布时间】:2019-11-14 21:50:18
【问题描述】:

我面临的问题是我有MyModel 中的custom_filter,它返回<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

如何处理查询集列表。 查询的 graphql 响应应该给出一个以查询集为元素的列表。

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

  },


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

  },


]

如何在不同的列表元素中获取不同查询集的结果? &lt;QuerySet&gt;的数量不固定。

我必须做什么才能实现这一目标?

【问题讨论】:

    标签: django graphql graphene-python graphene-django


    【解决方案1】:

    这可以通过创建两种对象类型并将一个简单地嵌套在另一个中来完成。

    第一个对象类型将是MyModelDjangoObjectType

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

    第二种对象类型将是自定义ObjectType

    class MyModelNode(graphene.ObjectType):
        my_model_items = graphene.List(DjangoMyModelNode)
    
        def resolve_my_model_items(self, info, **kwargs):
            return self
    

    查询将保持不变

    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
    
    

    这会根据想要的结果返回东西

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2020-01-16
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多