Я пытаюсь создать мутацию обновления модели, имеющей отношение внешнего ключа. Я сделал все в соответствии с документацией, но он по-прежнему не работает, когда я предоставляю входные данные сторонней модели.
Я создал входные данные с соответствующими атрибутами, которые я должен передать в запросе, но он не работает и выбрасывает показанную ниже ошибку. Поле 'id' ожидало число, но получило {'id': 2}.
Я не могу понять причину этой ошибки. Я передаю правильный ввод (я полагаю), может кто-нибудь, пожалуйста, помогите мне понять, почему это происходит?
Ваши предложения и отзывы очень ценятся.
Входные данные:
class FuelTypeInput(graphene.InputObjectType):
# id of the FuelTypeModel
id = graphene.Int()
label = graphene.String()
class FuelSubtypeInput(graphene.InputObjectType):
# Graphene ID
id = graphene.ID()
label = graphene.String()
fuel_type = graphene.Field(FuelTypeInput)
Обновление мутации:
class UpdateFuelSubType(relay.ClientIDMutation):
class Input:
id = Int() # id of the Fuel SubTypeModel
input = FuelSubtypeInput(required=True)
ok = True
fuel_subtype = Field(FuelSubTypeNode)
def mutate_and_get_payload(root, info, id, input):
ok = False
if FuelSubType.objects.filter(pk=id).update(**input):
fuel_subtype = FuelSubType.objects.get(pk=id)
ok = True
return UpdateFuelSubType(fuel_subtype=fuel_subtype)
return UpdateFuelSubType(fuel_subtype=None)
Запрос мутации на клиенте:
mutation MyMutations {
updateFuelSubtype(
input: {
id: 2,
input: { label: "Updated 11 Mutation Label",
fuelType: { id: 2 }
}
}
) {
fuelSubtype {
label
}
}
}
Окончательный результат:
{
"errors": [
{
"message": "Field 'id' expected a number but got {'id': 2}.",
"locations": [
{
"line": 48,
"column": 5
}
],
"path": [
"updateFuelSubtype"
]
}
],
"data": {
"updateFuelSubtype": null
}
}
Я бы тоже хотел бы отметить, что когда я удаляю ввод fuelType
из запроса, все работает нормально, например:
mutation MyMutations {
updateFuelSubtype(
input: {
id: 2,
input: { label: "Updated 11 Mutation Label" }
}
) {
fuelSubtype {
label
}
}
}