首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graphene-django返回空节点,而不是仅返回节点字段。

Graphene-django返回空节点,而不是仅返回节点字段。
EN

Stack Overflow用户
提问于 2017-11-04 14:47:32
回答 1查看 774关注 0票数 1

我面临着石墨烯和Django的一个奇怪的问题。这些文档似乎缺乏一个解决方案,我不知道自己做错了什么。

我有以下模型:

代码语言:javascript
复制
Class Sentence(models.Model):
    ref = models.CharField(max_length=30, primary_key=True)
    body = models.TextField(default=None)

Class Summary(models.Model):
    sentence = models.ForeignKey(Sentence, on_delete=models.CASCADE)
    text = models.TextField(default=None)

(每个句子可以有多个摘要)

和以下模式:

代码语言:javascript
复制
Class SentenceType(DjangoObjectType):
    class Meta:
        model = models.Sentence
        filter_fields = {"ref": ["exact"]}
        interfaces = (graphene.Node, )

Class SummaryType(DjangoObjectType):
    class Meta:
        model = models.Summary
        filter_field = {"text": ["icontains"]}
        interfaces = (graphene.Node, )

Class Query(graphene.ObjectType):
    all_sentences = DjangoFilterConnectionField(SentenceType)
    sentence = graphene.Field(SentenceType, ref=graphene.string(), body=graphene.string())
    all_summary = all_provvedimenti = DjangoFilterConnectionField(SummaryType)
    summary = graphene.field(SummaryType, id=graphene.Int(), text=graphene.string())

def resolve_all_summaries(self, context, **kwargs):
    return models.Summary.objects.all()

可能发生的情况是,我的数据库中有一个或多个摘要,没有相应的句子。

现在,当我查询

代码语言:javascript
复制
{
  allSummaries{
    edges{
      node{
        text
        sentence{
          ref
        }
      }
    }
  }
}

如果这句话是为了摘要而存在的,那就没有问题了。,但如果没有相应的句子,我得到:

代码语言:javascript
复制
"errors": [
    {
      "message": "Sentence matching query does not exist.",
      "locations": [
        {
          "line": 6,
          "column": 9
        }
      ]
    }
],
...,
...,
"data":[
    ...,
    {
      "node": null
    },
    {
      "node":{
        "text": "blah blah blah sentence summary"
        "sentence": {
          "ref": "sentence_reference"
        }
      }
    }
    {
      "node": null
    },
    ...,
]

当然,我期望的输出是,当摘要节点不存在相应的句子时,它仍然会返回摘要的文本和“句子”:null或[]。

我在文档和谷歌上都没有运气。看来我是唯一有这个问题的人。我不明白我是在Django,石墨烯上犯了什么错误,还是它只是个bug。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 22:48:56

更改该行中的all_summary变量

代码语言:javascript
复制
all_summary = all_provvedimenti = DjangoFilterConnectionField(SummaryType)

转到allSummaries

然后将函数名更改为

代码语言:javascript
复制
def resolve_all_summaries(self, context, **kwargs):

也到了resolve_allSummaries

然后,您可以通过以下方式查询:

代码语言:javascript
复制
 {
  allSummaries{
    edges{
      node{
        text
        sentence{
          ref
        }
      }
    }
  }
}

所有这三个标识符都指向相同的事物,因此需要匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47111946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档