Custom fields
It is possible to add custom input fields to the following mutations:
DjangoCreateMutation
DjangoPatchMutation
DjangoUpdateMutation
DjangoBatchCreateMutation
DjangoBatchPatchMutation
DjangoBatchUpdateMutation
The custom fields will be added to the top-level input input data structure. While the fields will not be used directly in any creation/updating process by the library itself, they can be accessed in all handle- and hook-methods.
class Dog(models.Model):
name = models.TextField()
bark_count = models.IntegerField(default=0)
class UpdateDogMutation(DjangoUpdateMutation):
class Meta:
model = Dog
custom_fields = {
"bark": graphene.Boolean()
}
@classmethod
def before_save(cls, root, info, input, id, obj: Dog):
if input.get("bark"):
obj.bark_count += 1
return obj
Running the below mutation will increase the bark count by one:
updateDog(id: "RG9nTm9kZToxMw==", input: {name: "Sparky", bark: true}){
dog{
id
barkCount
}
}