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_1とのような奇妙な状態値が表示されA_2ます。「イニシエート」のような意味のある価値を与えてくれると期待していました。kv ペア列挙型の値を取得するにはどうすればよいですか?

2 番目の質問では、この列挙型の可能な値のリストをユーザーに提示したい場合、どうすればよいでしょうか?

4

1 に答える 1

10

解決策を見つけましたが、それが最善の解決策なのだろうか。列挙値を持つクエリに加えて、このクエリを含めました

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

OrderState列挙型のすべての可能なキーと値のペアをプルします。次に、これを辞書として使用して、列挙値を検索できます。

このアプローチはまだ手動すぎると思いますが、列挙値のクエリを作成する例はありません。列挙型とは何か、列挙型を宣言する方法を説明するだけで終わりました。

于 2016-11-17T13:32:56.993 に答える