mirror of
https://github.com/graphql-python/graphene-django.git
synced 2024-11-25 02:54:06 +03:00
b8e598d66d
* Add new setting to create unique enum names * Add specific tests for name generation * Add schema test * Rename settings field * Rename setting * Add custom function setting * Add documentation * Use format instead of f strings * Update graphene_django/converter.py Co-Authored-By: Syrus Akbary <me@syrusakbary.com> * Fix tests * Update docs * Import function through import_string function Co-authored-by: Syrus Akbary <me@syrusakbary.com>
173 lines
3.3 KiB
ReStructuredText
173 lines
3.3 KiB
ReStructuredText
Settings
|
|
========
|
|
|
|
Graphene-Django can be customised using settings. This page explains each setting and their defaults.
|
|
|
|
Usage
|
|
-----
|
|
|
|
Add settings to your Django project by creating a Dictonary with name ``GRAPHENE`` in the project's ``settings.py``:
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
...
|
|
}
|
|
|
|
|
|
``SCHEMA``
|
|
----------
|
|
|
|
The location of the top-level ``Schema`` class.
|
|
|
|
Default: ``None``
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'SCHEMA': 'path.to.schema.schema',
|
|
}
|
|
|
|
|
|
``SCHEMA_OUTPUT``
|
|
-----------------
|
|
|
|
The name of the file where the GraphQL schema output will go.
|
|
|
|
Default: ``schema.json``
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'SCHEMA_OUTPUT': 'schema.json',
|
|
}
|
|
|
|
|
|
``SCHEMA_INDENT``
|
|
-----------------
|
|
|
|
The indentation level of the schema output.
|
|
|
|
Default: ``2``
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'SCHEMA_INDENT': 2,
|
|
}
|
|
|
|
|
|
``MIDDLEWARE``
|
|
--------------
|
|
|
|
A tuple of middleware that will be executed for each GraphQL query.
|
|
|
|
See the `middleware documentation <https://docs.graphene-python.org/en/latest/execution/middleware/>`__ for more information.
|
|
|
|
Default: ``()``
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'MIDDLEWARE': (
|
|
'path.to.my.middleware.class',
|
|
),
|
|
}
|
|
|
|
|
|
``RELAY_CONNECTION_ENFORCE_FIRST_OR_LAST``
|
|
------------------------------------------
|
|
|
|
Enforces relay queries to have the ``first`` or ``last`` argument.
|
|
|
|
Default: ``False``
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'RELAY_CONNECTION_ENFORCE_FIRST_OR_LAST': False,
|
|
}
|
|
|
|
|
|
``RELAY_CONNECTION_MAX_LIMIT``
|
|
------------------------------
|
|
|
|
The maximum size of objects that can be requested through a relay connection.
|
|
|
|
Default: ``100``
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'RELAY_CONNECTION_MAX_LIMIT': 100,
|
|
}
|
|
|
|
|
|
``CAMELCASE_ERRORS``
|
|
------------------------------------
|
|
|
|
When set to ``True`` field names in the ``errors`` object will be camel case.
|
|
By default they will be snake case.
|
|
|
|
Default: ``False``
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'CAMELCASE_ERRORS': False,
|
|
}
|
|
|
|
# result = schema.execute(...)
|
|
print(result.errors)
|
|
# [
|
|
# {
|
|
# 'field': 'test_field',
|
|
# 'messages': ['This field is required.'],
|
|
# }
|
|
# ]
|
|
|
|
.. code:: python
|
|
|
|
GRAPHENE = {
|
|
'CAMELCASE_ERRORS': True,
|
|
}
|
|
|
|
# result = schema.execute(...)
|
|
print(result.errors)
|
|
# [
|
|
# {
|
|
# 'field': 'testField',
|
|
# 'messages': ['This field is required.'],
|
|
# }
|
|
# ]
|
|
|
|
|
|
``DJANGO_CHOICE_FIELD_ENUM_V3_NAMING``
|
|
--------------------------------------
|
|
|
|
Set to ``True`` to use the new naming format for the auto generated Enum types from Django choice fields. The new format looks like this: ``{app_label}{object_name}{field_name}Choices``
|
|
|
|
Default: ``False``
|
|
|
|
|
|
``DJANGO_CHOICE_FIELD_ENUM_CUSTOM_NAME``
|
|
--------------------------------------
|
|
|
|
Define the path of a function that takes the Django choice field and returns a string to completely customise the naming for the Enum type.
|
|
|
|
If set to a function then the ``DJANGO_CHOICE_FIELD_ENUM_V3_NAMING`` setting is ignored.
|
|
|
|
Default: ``None``
|
|
|
|
.. code:: python
|
|
|
|
# myapp.utils
|
|
def enum_naming(field):
|
|
if isinstance(field.model, User):
|
|
return f"CustomUserEnum{field.name.title()}"
|
|
return f"CustomEnum{field.name.title()}"
|
|
|
|
GRAPHENE = {
|
|
'DJANGO_CHOICE_FIELD_ENUM_CUSTOM_NAME': "myapp.utils.enum_naming"
|
|
}
|