graphene/docs/relay/mutations.rst

56 lines
1.5 KiB
ReStructuredText
Raw Normal View History

Mutations
=========
Most APIs dont just allow you to read data, they also allow you to
2016-09-15 10:38:53 +03:00
write.
In GraphQL, this is done using mutations. Just like queries,
Relay puts some additional requirements on mutations, but Graphene
nicely manages that for you. All you need to do is make your mutation a
subclass of ``relay.ClientIDMutation``.
.. code:: python
class IntroduceShip(relay.ClientIDMutation):
class Input:
ship_name = graphene.String(required=True)
faction_id = graphene.String(required=True)
ship = graphene.Field(Ship)
faction = graphene.Field(Faction)
@classmethod
def mutate_and_get_payload(cls, input, context, info):
ship_name = input.get('ship_name')
faction_id = input.get('faction_id')
ship = create_ship(ship_name, faction_id)
faction = get_faction(faction_id)
return IntroduceShip(ship=ship, faction=faction)
Accepting Files
-------------
2017-02-07 04:19:02 +03:00
Mutations can also accept files, they will be in the context variable.
.. code:: python
class UploadFile(graphene.ClientIDMutation):
class Input:
pass
# nothing needed for uploading file
# your return fields
success = graphene.String()
@classmethod
def mutate_and_get_payload(cls, input, context, info):
files = context.FILES
print(files)
# do something with files
2017-02-07 04:19:02 +03:00
return UploadFile(success=True)