2016-11-17 3 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. Как я могу управлять перечислениями в React с Apollo клиентом

Для первого вопроса, то у меня есть этот запрос

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

Это дает мне странное государственное значение, такое как A_1 и A_2. Я ожидал, что это придаст мне значимую ценность, например «Инициировать». Как я могу получить значение перечисления kv-пары?

Для второго вопроса, если я хочу представить пользователю список возможных значений этого перечисления, как я могу это сделать?

ответ

4

Я нашел решение, хотя мне интересно, является ли он лучшим. В дополнение к запросу, который имеет перечислений значения, я включил этот запрос

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

Это тянет все возможные пары ключ-значение для OrderState перечисления. Затем я могу использовать это как словарь для поиска значений перечисления.

Я чувствую, что этот подход по-прежнему слишком ручной, но примеров, которые делают запрос для значений перечисления, нет. Они просто перестали описывать, что такое перечисление, и как объявить его.

 Смежные вопросы

  • Нет связанных вопросов^_^