Как удалить вложенный входной объект в запросе мутации Graphene Django (реле)? - PullRequest
0 голосов
/ 03 февраля 2020

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

В общем, это работает, но окончательный запрос на стороне клиента очень уродлив. Мне нужно передать аргументы таким образом

query( input : { input : { ...arguments  } } )

и, честно говоря, мне это не нравится. Я думаю, это выглядит некрасиво.

Таким образом, вопрос: Можно ли избежать использования большого количества этих входных объектов? Можно использовать 1 входных объект , но вложенный является избыточным, и я хотел бы избежать его использования.

Спасибо за любую помощь!

Вот пример

class FuelTypeInput(graphene.InputObjectType):
    id = graphene.Int()
    label = graphene.String()
class FuelSubtypeInput(graphene.InputObjectType):
    id = graphene.ID()
    label = graphene.String()
    fuel_type = graphene.Field(FuelTypeInput)


class CreateFuelSubType(relay.ClientIDMutation):
  class Input:
    input = FuelSubtypeInput(required=True)

  fuel_subtype = Field(FuelSubTypeNode)
  ok = graphene.Boolean()

  def mutate_and_get_payload(root, info, input):
    label = input.label
    fuel_type = FuelType.objects.get(pk=input.fuel_type.id)

    fuel_subtype = FuelSubType(label=label, fuel_type=fuel_type)
    ok = True
    return CreateFuelSubType(fuel_subtype=fuel_subtype, ok=ok)

Мутация запрос:

mutation MyMutations {
    createFuelSubtype( input: { input : { label: "Mutation Subtype", fuelType: {
      id: 3
    }} } ) {
        fuelSubtype {
            label
        }
        ok
    }
}

Работает нормально, вот результат. Но я бы хотел удалить вложенный вход вещей

{
  "data": {
    "createFuelSubtype": {
      "fuelSubtype": {
        "label": "Mutation Subtype"
      },
      "ok": true
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...