diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9214d35..adb54c7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,5 @@ default_language_version: - python: python3.11 + python: python3.10 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 diff --git a/graphene_django/converter.py b/graphene_django/converter.py index 90c2128..760973f 100644 --- a/graphene_django/converter.py +++ b/graphene_django/converter.py @@ -1,6 +1,7 @@ from collections import OrderedDict from functools import singledispatch, wraps from asyncio import get_running_loop +from asgiref.sync import sync_to_async from django.db import models from django.utils.encoding import force_str @@ -265,17 +266,17 @@ def convert_onetoone_field_to_djangomodel(field, registry=None): _type = registry.get_type_for_model(model) if not _type: return - + class CustomField(Field): def wrap_resolve(self, parent_resolver): resolver = super().wrap_resolve(parent_resolver) - try: + try: get_running_loop() except RuntimeError: pass else: - resolver=sync_to_async(resolver) + resolver = sync_to_async(resolver) return resolver @@ -334,7 +335,20 @@ def convert_field_to_djangomodel(field, registry=None): if not _type: return - return Field( + class CustomField(Field): + def wrap_resolve(self, parent_resolver): + resolver = super().wrap_resolve(parent_resolver) + + try: + get_running_loop() + except RuntimeError: + pass + else: + resolver = sync_to_async(resolver) + + return resolver + + return CustomField( _type, description=get_django_field_description(field), required=not field.null,