12

假设我有这样的模型

class Order(models.Model):
    STATES = [
        (1, 'Initiate'),
        (2, "Brief"),
        (3, "Planning"),
        (4, "Price Negotiate"),
        (5, "Executing"),
        (6, "Pending"),
        (7, "Completed"),
        (8, "Canceled"),
        (9, "Failed"),
        (10, "Paid"),
    ]

    state = models.PositiveSmallIntegerField(
        choices=STATES,
        default=1
    )

当我将此模型与其 Graphene 对象类型伴侣配对时

class OrderNode(graphene_django.DjangoObjectType):
    class Meta:
        model = Order
        interfaces = (relay.Node,)

创建一个带有名称的枚举类型OrderState!

我很关心

  1. 如何查询枚举
  2. 如何使用 Apollo 客户端管理 React 中的枚举

对于第一个问题,我有这个查询

{
  customer(id: "Q3VzdG9tZXJOb2RlOjE=") {
    name
    orders {
      edges {
        node {
          state
        }
      }
    }
  }
}

它给了我一个奇怪的状态值,比如A_1and A_2。我期待它能给我一些有意义的价值,比如“Initiate”。如何获得 kv 对枚举的值?

对于第二个问题,如果我想向用户展示这个枚举的可能值列表,我该怎么做?

4

1 回答 1

10

我找到了一个解决方案,但我想知道它是否是最好的。除了具有枚举值的查询之外,我还包括了这个查询

query {
    # previous queries
    __type(name: "OrderState") {
       states: enumValues {
           name
           description
       }
    }
}

OrderState它为枚举提取所有可能的键值对。然后我可以将其用作字典来查找枚举值。

我觉得这种方法还是太手动了,但是没有例子可以查询枚举值。他们只是停止描述枚举是什么,以及如何声明枚举。

于 2016-11-17T13:32:56.993 回答