When using DjangoModelFormMutation and getting a modelform error the mutation shows an invalid keyword argument for Mutation as shown below. I am supposed to get errors for the field name showing "This name has already been registered." However I am getting graphql.error.located_error.GraphQLLocatedError: 'name' is an invalid keyword argument for CategoryMutation
# model
class Category(models.Model):
name = models.CharField(max_length=10, unique=True,
error_messages={'unique':"This name has already been registered."})
def __str__(self):
return self.name
#model form
class CategoryForm(ModelForm):
class Meta:
model = Category
exclude = []
# create category mutation
class CategoryMutation(DjangoModelFormMutation):
category = graphene.Field(CategoryType)
class Meta:
form_class = CategoryForm
mutation:
mutation {
categoryCreate(input: {name: "spices"}) {
errors {
field,
messages
}
}
}
results when the name is not unique:
{
"errors": [
{
"message": "'name' is an invalid keyword argument for CategoryMutation",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"categoryCreate"
]
}
],
"data": {
"categoryCreate": null
}
}
There should be two things that should be changed IMO
return_field_name is set in Meta options to match a field name in mutation classform.data should be handled differently or should be removed altogether and the length of errors should be used to determine success/failure@ajatprabha you are right removing the **form.data fixed the problem. But I wonder why it is passed as kwargs? is it intended to return the invalid data back to the client ? I don't see the point of it.
Yes, it's for returning back the invalid data, however, it's not dynamic enough to work properly right now.
This issue should be fixed in #915 Sorry for the inconvenience
Just released v2.9.1 that should fix this: https://github.com/graphql-python/graphene-django/releases/tag/v2.9.1
Most helpful comment
Just released v2.9.1 that should fix this: https://github.com/graphql-python/graphene-django/releases/tag/v2.9.1