Django + Graphene + DjangoModelFormMutation : диссоциация создания и обновления
Я использую DjangoModelFormMutation
из Graphene-python, чтобы представить общую мутацию для модели, вот так :
from graphene import Field
from graphene_django.forms.mutation import DjangoModelFormMutation
from django.db import models
class Pet(models.Model):
name = models.CharField()
legs = models.PositiveIntegerField()
class PetForm(forms.ModelForm):
class Meta:
model = Pet
fields = ('name', 'legs')
# This will get returned when the mutation completes successfully
class PetType(DjangoObjectType):
class Meta:
model = Pet
class PetMutation(DjangoModelFormMutation):
pet = Field(PetType)
class Meta:
form_class = PetForm
Затем в моем файле схемы я регистрирую мутацию следующим образом :
create_pet = mutations.PetMutation.Field()
update_pet = mutations.PetMutation.Field()
Это работает, но есть два желаемых поведения, которых я не могу достичь таким способом :
- Иметь две различные мутации : одна для create, которая может только создавать и не обновлять, и одна для update, которая может только обновлять, но не создавать.
- Пусть мутация обновления работает также частично, т.е. обновляет только поля, предоставленные клиентом.
Как я могу добиться желаемого поведения?