Integration with Django Rest Framework¶
You can re-use your Django Rest Framework serializer with graphene django.
Mutation¶
You can create a Mutation based on a serializer by using the SerializerMutation base class:
from graphene_django.rest_framework.mutation import SerializerMutation
class MyAwesomeMutation(SerializerMutation):
class Meta:
serializer_class = MySerializer
Create/Update Operations¶
By default ModelSerializers accept create and update operations. To customize this use the model_operations attribute. The update operation looks up models by the primary key by default. You can customize the look up with the lookup attribute.
from graphene_django.rest_framework.mutation import SerializerMutation
class AwesomeModelMutation(SerializerMutation):
class Meta:
serializer_class = MyModelSerializer
model_operations = ['create', 'update']
lookup_field = 'id'
Overriding Update Queries¶
Use the method get_serializer_kwargs to override how updates are applied.
from graphene_django.rest_framework.mutation import SerializerMutation
class AwesomeModelMutation(SerializerMutation):
class Meta:
serializer_class = MyModelSerializer
@classmethod
def get_serializer_kwargs(cls, root, info, **input):
if 'id' in input:
instance = Post.objects.filter(id=input['id'], owner=info.context.user).first()
if instance:
return {'instance': instance, 'data': input, 'partial': True}
else:
raise http.Http404
return {'data': input, 'partial': True}