mirror of
				https://github.com/graphql-python/graphene-django.git
				synced 2025-10-31 07:57:31 +03:00 
			
		
		
		
	* 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"
 | |
|    }
 |