在Python中,为什么GraphQL枚举值显示为null


Django: 2.0.6
graphene: 2.1.2
graphene-django: 2.0.0

我有以下代码:

class SWLangChoice(Enum):
PHP = "PHP"
PY = "Python"

SWLangChoiceEnum = graphene.Enum.from_enum(SWLangChoice)

class LangChoiceType(graphene.ObjectType):
lang = graphene.Field(SWLangChoiceEnum)

class Query(graphene.ObjectType):
langs = graphene.Field(LangChoiceType)
def resolve_langs(self, info):
return SWLangChoiceEnum

最初,SWLangChoice是一个普通的Enum对象。因此,我将其转换为SWLangChoiceEnum并创建类型LangChoiceType。在GraphiQL中,我可以看到这个枚举的键(尽管它们标记为值(。但当我请求这个Enum时,我看到:

{
"data": {
"langs": {
"lang": null
}
}
}

我做错了什么?

我也不确定您试图返回枚举的哪一部分,但这里对您的代码进行了一些最小的修改,可以同时完成

class SWLangChoice(enum.Enum):
PHP = "PHP"
PY = "Python"
# SWLangChoiceEnum = graphene.Enum.from_enum(SWLangChoice)
class LangChoiceType(graphene.ObjectType):
key = graphene.String()
value = graphene.String()
class Query(graphene.AbstractType):
langs = graphene.List(LangChoiceType) # Changed to return a list
def resolve_langs(self, info):
# Creates a new LangChoiceType object by iterating terates over enum
return [LangChoiceType(lang.name, lang.value) for lang in SWLangChoice] 

石墨烯的最新文献。Enum在其页面上没有给出用例,所以我不确定它的用途。因此,我不会在回答中使用它。

使用上面的代码,以下查询和结果是

query enum {
langs {
key
value
}
{
"data": {
"langs": [
{
"key": "PHP",
"value": "PHP"
},
{
"key": "PY",
"value": "Python"
}
]
}
}

最新更新