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()

Это работает, но есть два желаемых поведения, которых я не могу достичь таким способом :

  1. Иметь две различные мутации : одна для create, которая может только создавать и не обновлять, и одна для update, которая может только обновлять, но не создавать.
  2. Пусть мутация обновления работает также частично, т.е. обновляет только поля, предоставленные клиентом.

Как я могу добиться желаемого поведения?

Вернуться на верх