Integration with Django forms¶
Graphene-Django comes with mutation classes that will convert the fields on Django forms into inputs on a mutation. Note: the API is experimental and will likely change in the future.
FormMutation¶
class MyForm(forms.Form):
name = forms.CharField()
class MyMutation(FormMutation):
class Meta:
form_class = MyForm
MyMutation will automatically receive an input argument. This argument should be a dict where the key is name and the value is a string.
ModelFormMutation¶
ModelFormMutation will pull the fields from a ModelForm.
class Pet(models.Model):
name = models.CharField()
class PetForm(forms.ModelForm):
class Meta:
model = Pet
fields = ('name',)
# This will get returned when the mutation completes successfully
class PetType(DjangoObjectType):
class Meta:
model = Pet
class PetMutation(DjangoModelFormMutation):
class Meta:
form_class = PetForm
PetMutation will grab the fields from PetForm and turn them into inputs. If the form is valid then the mutation
will lookup the DjangoObjectType for the Pet model and return that under the key pet. Otherwise it will
return a list of errors.
You can change the input name (default is input) and the return field name (default is the model name lowercase).
class PetMutation(DjangoModelFormMutation):
class Meta:
form_class = PetForm
input_field_name = 'data'
return_field_name = 'my_pet'
Form validation¶
Form mutations will call is_valid() on your forms.
If the form is valid then form_valid(form, info) is called on the mutation. Override this method to change how
the form is saved or to return a different Graphene object type.
If the form is not valid then a list of errors will be returned. These errors have two fields: field, a string
containing the name of the invalid form field, and messages, a list of strings with the validation messages.