我面临着石墨烯和Django的一个奇怪的问题。这些文档似乎缺乏一个解决方案,我不知道自己做错了什么。
我有以下模型:
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)(每个句子可以有多个摘要)
和以下模式:
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()可能发生的情况是,我的数据库中有一个或多个摘要,没有相应的句子。
现在,当我查询时
{
allSummaries{
edges{
node{
text
sentence{
ref
}
}
}
}
}如果这句话是为了摘要而存在的,那就没有问题了。,但如果没有相应的句子,我得到:
"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。
有什么建议吗?
发布于 2018-08-09 22:48:56
更改该行中的all_summary变量
all_summary = all_provvedimenti = DjangoFilterConnectionField(SummaryType)转到allSummaries
然后将函数名更改为
def resolve_all_summaries(self, context, **kwargs):也到了resolve_allSummaries
然后,您可以通过以下方式查询:
{
allSummaries{
edges{
node{
text
sentence{
ref
}
}
}
}
}所有这三个标识符都指向相同的事物,因此需要匹配。
https://stackoverflow.com/questions/47111946
复制相似问题