首页 > 解决方案 > 石墨烯:枚举参数似乎不起作用

问题描述

我目前很难处理突变枚举Argument

以下是我的代码Mutation

class CreatePerson(graphene.Mutation):
    foo = graphene.String()

    def mutate(self, info, **kwargs):
        return CreatePerson(foo='foo')


    class Arguments:
        enum_arg = graphene.Argument(graphene.Enum.from_enum(EnumArg))

枚举类:

from enum import Enum

class EnumArg(Enum):
    Baz = 0
    Bar = 1
    Spam = 2
    Egg = 3

使用POSTMAN 的命令:

{
    "query": "mutation": {createPerson(enumArg=1) { foo }}
}

但我结束了这个错误信息:

"message": "Argument \"enumArg\" has invalid value 1.
            Expected type \"EnumArg\", found 1.",

我也尝试放弃突变,但错误仍然存​​在enumArg=\"Bar\"createPerson

标签: pythongraphqlgraphene-python

解决方案


在定义枚举时,我们可以为枚举中的每个枚举值分配一个任意值。但是,此值仅由 GraphQL 服务本身在内部使用。例如,如果字段参数的类型是枚举,则该值将作为参数值传递给字段的解析器。但是,在编写 GraphQL 文档时,枚举值必须始终由其名称引用,而不是它的值。

mutation {
  createPerson(enumArg: Bar) {
    foo
  }
}

推荐阅读