mirror of
https://github.com/graphql-python/graphene.git
synced 2025-03-11 23:45:47 +03:00
68 lines
1.3 KiB
Markdown
68 lines
1.3 KiB
Markdown
# Mutations
|
|
|
|
A Mutation is a special ObjectType that define also an Input.
|
|
|
|
## Quick example
|
|
|
|
This example model defines a Mutation:
|
|
|
|
```python
|
|
import graphene
|
|
|
|
class CreatePerson(graphene.Mutation):
|
|
class Input:
|
|
name = graphene.String()
|
|
|
|
ok = graphene.String()
|
|
person = graphene.Field('Person')
|
|
|
|
@classmethod
|
|
def mutate(cls, args, info):
|
|
person = Person(name=args.get('name'))
|
|
ok = True
|
|
return CreatePerson(person=person, ok=ok)
|
|
```
|
|
|
|
**person** and **ok** are the output fields of the Mutation when is resolved.
|
|
**Input** attributes are the arguments that the Mutation needs for resolving. **mutate** is the function that will be applied once the mutation is called.
|
|
|
|
So, we can finish our schema like this:
|
|
|
|
```python
|
|
# ... the Mutation Class
|
|
|
|
class Person(graphene.ObjectType):
|
|
name = graphene.String()
|
|
|
|
class MyMutations(graphene.ObjectType):
|
|
create_person = graphene.Field(CreatePerson)
|
|
|
|
schema = graphene.Schema(mutation=MyMutations)
|
|
```
|
|
|
|
## Executing the Mutation
|
|
|
|
Then, if we query (`schema.execute(query_str)`) the following:
|
|
```graphql
|
|
mutation myFirstMutation {
|
|
createPerson(name:"Peter") {
|
|
person {
|
|
name
|
|
}
|
|
ok
|
|
}
|
|
}
|
|
```
|
|
|
|
We should receive:
|
|
|
|
```json
|
|
{
|
|
"createPerson": {
|
|
"person" : {
|
|
name: "Peter"
|
|
},
|
|
"ok": true
|
|
}
|
|
}
|