Examples¶
Basic Demo¶
Grapple works by iterating over all the models in your project and if it detects
a graphql_fields
field then it builds a GraphQL type based on the structure
defined in the list.
Here is a GraphQL model configuration for the default page from the Wagtail docs:
from grapple.models import (
GraphQLRichText,
GraphQLString,
GraphQLStreamfield,
)
class BlogPage(Page):
author = models.CharField(max_length=255)
date = models.DateField("Post date")
summary = RichTextField()
body = StreamField(
[
("heading", blocks.CharBlock(classname="full title")),
("paragraph", blocks.RichTextBlock()),
("image", ImageChooserBlock()),
]
)
content_panels = Page.content_panels + [
FieldPanel("author"),
FieldPanel("date"),
FieldPanel("summary"),
FieldPanel("body"),
]
# Note these fields below:
graphql_fields = [
GraphQLString("heading"),
GraphQLString("date"),
GraphQLString("author"),
GraphQLRichText("summary"),
GraphQLStreamfield("body"),
]
The following field can then be queries at http://localhost:8000/graphql using something like:
query {
pages {
...on BlogPage {
heading
date
author
summary
body {
rawValue
...on ImageChooserBlock {
image {
src
}
}
}
}
}
}
Next Steps