title: Strawberry docs
General
Types
Codegen
Extensions
>Errors
>Guides
Editor integration
Concepts
Integrations
Federation
Operations
Schema Configurations
Strawberry allows to customise how the schema is generated by passing configurations.
To customise the schema you can create an instance of StrawberryConfig
, as
shown in the example below:
import strawberry
from strawberry.schema.config import StrawberryConfig
@strawberry.typeclass Query: example_field: str
schema = strawberry.Schema(query=Query, config=StrawberryConfig(auto_camel_case=False))
In this case we are disabling the auto camel casing feature, so your output schema will look like this:
type Query { example_field: String!}
Available configurations
Here's a list of the available configurations:
auto_camel_case
By default Strawberry will convert the field names to camel case, so a field
like example_field
will be converted to exampleField
. You can disable this
feature by setting auto_camel_case
to False
.
schema = strawberry.Schema(query=Query, config=StrawberryConfig(auto_camel_case=False))
default_resolver
By default Strawberry will use the getattr
function as the default resolver.
You can customise this by setting the default_resolver
configuration.
This can be useful in cases you want to allow returning a dictionary from a resolver.
import strawberry
from strawberry.schema.config import StrawberryConfig
def custom_resolver(obj, field): try: return obj[field] except (KeyError, TypeError): return getattr(obj, field)
@strawberry.typeclass User: name: str
@strawberry.typeclass Query: @strawberry.field def user(self, info) -> User: # this won't type check, but will work at runtime return {"name": "Patrick"}
schema = strawberry.Schema( query=Query, config=StrawberryConfig(default_resolver=custom_resolver))
relay_max_results
By default Strawberry's max limit for relay connections is 100. You can
customise this by setting the relay_max_results
configuration.
schema = strawberry.Schema(query=Query, config=StrawberryConfig(relay_max_results=50))
disable_field_suggestions
By default Strawberry will suggest fields when a field is not found in the
schema. You can disable this feature by setting disable_field_suggestions
to
True
.
schema = strawberry.Schema( query=Query, config=StrawberryConfig(disable_field_suggestions=True))
info_class
By default Strawberry will create an object of type strawberry.Info
when the
user defines info: Info
as a parameter to a type or query. You can change this
behaviour by setting info_class
to a subclass of strawberry.Info
.
This can be useful when you want to create a simpler interface for info- or
context-based properties, or if you wanted to attach additional properties to
the Info
class.
class CustomInfo(Info): @property def response_headers(self) -> Headers: return self.context["response"].headers schema = strawberry.Schema(query=Query, config=StrawberryConfig(info_class=CustomInfo))