2016-11-17 71 views
3
枚举值

假设我有这样查询用于GraphQL

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 
    ) 

模型当我配对这个模型与其石墨烯对象类型伴侣

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

创建与名称OrderState!的枚举类型。

我所关心的

  1. 我如何可以查询的枚举
  2. 我如何管理枚举与阿波罗客户

反应的第一个问题,我有这个疑问

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

它给了我一个奇怪的状态值,如A_1A_2。我期待它能给我一些有意义的价值,比如“Initiate”。我怎样才能得到kv对enum的价值?

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

回答

4

我找到了一个解决方案,但我不知道它是否是最好的。除了具有枚举值的查询,我包括在此查询

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

它拉了OrderState枚举所有可能的键值对。然后我可以使用这个字典来查找枚举值。

我觉得这种方法仍然过于人工,但没有任何例子可以查询枚举值。他们停止描述枚举是什么,以及如何声明枚举。