Django graphql graphene从返回值中删除冗余查询

时间:2018-10-15 10:36:02

标签: django graphql graphene-python

最近几天,我读了太多的graphql,以至于我再也看不到森林里的树木了。

此人一开始得到的结果几乎正是我想要的(他的问题,而不是他的解决方案),但似乎很多代码已被弃用,我似乎无法使其正常工作: {3}}

我有一堆返回的容器。所有容器中都有每天的数量。我只想退还某天的金额。

此刻,我确实返回了这些结果(天),但其他所有结果(天)也都返回了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()

到目前为止,我几乎已经阅读了石墨烯中的所有内容,但是,即使您有一个反映我要执行的操作的链接,我也将不胜感激。

我的最终选择是进行两次调用,以获取所有容器ID,并再次调用以获取特定日期的所有金额(带有容器ID),并使用2个for循环将金额添加到对应的容器...:(

0 个答案:

没有答案