From b358e4cb5ad8299eb5687d3b1df204ac5ed2f766 Mon Sep 17 00:00:00 2001 From: Frederik Creemers Date: Mon, 15 Feb 2016 23:06:46 +0100 Subject: [PATCH] Add documentation for relay mutations. --- docs/pages/docs/relay.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/pages/docs/relay.md b/docs/pages/docs/relay.md index ba22b6bb..03dbdee2 100644 --- a/docs/pages/docs/relay.md +++ b/docs/pages/docs/relay.md @@ -54,6 +54,28 @@ class Query(graphene.ObjectType): node = relay.NodeField() ``` +## Mutations + +Most APIs don't just allow you to read data, they also allow you to 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`. + +```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, 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) +``` ## Useful links