在 GraphQL 实现的过程中,我发现自己做了很多循环引用来保持包的模块化。考虑以下文件夹结构。
project/
__init__.py
graphql/
__init__.py
inputs/
__init__.py
company.py
contact.py
公司.py
import graphene
import graphql.inputs.contact
class CompanyInput(graphene.InputObjectType):
contacts = graphene.List(graphql.inputs.contacts.ContactInput)
...
联系人.py
import graphene
import graphql.inputs.company
class ContactInput(graphene.InputObjectType):
company = graphql.inputs.company.CompanyInput()
我一直收到 Django 错误:
ImportError at /api/v2/
Could not import 'gql.schema.schema' for Graphene setting 'SCHEMA'. AttributeError: 'module' object has no attribute 'company'.
这种循环引用可能吗?联系人和公司都需要能够引用单独包中定义的输入对象类。这样,graphql 可以接受带有子元素的输入,并允许嵌套创建以及允许在创建父对象时输入对象。