Я хочу создать мутацию в эстафете. Я использую шаблон 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
}
}
}