我有一个Django模型,该模型具有与自身相关的外键,我想将此模型表示为石墨烯ObjectType
。
我知道使用graphene_django库中的DjangoObjectType
做到这一点很简单。
我正在寻找一种不使用graphene_django的优雅python解决方案。
我要代表的模型的例子
# models.py
class Category(models.Model):
name = models.CharField(unique=True, max_length=200)
parent = models.ForeignKey(
'self', on_delete=models.SET_NULL, null=True, blank=True,
related_name='child_category')
以下模式显然无法缩放,并且ParentCategoryType
没有parent
字段,因此严格来说它并不是CategoryType
的父级。
# schema.py
class ParentCategoryType(graphene.ObjectType):
id = graphene.types.uuid.UUID()
name = graphene.String()
class CategoryType(graphene.ObjectType):
id = graphene.types.uuid.UUID()
name = graphene.String()
parent = graphene.Field(ParentCategoryType)
下面的代码给出了CategoryType
未定义的错误。
#schema.py
class CategoryType(graphene.ObjectType):
id = graphene.types.uuid.UUID()
name = graphene.String()
parent = graphene.Field(CategoryType)
非常感谢任何帮助。
答案 0 :(得分:0)
做完一些研究后,我遇到了一个GitHub issue对此进行跟踪。答案似乎是here。我自己尝试过,并且有效。因此,根据您的情况,您只需将代码更改为读取parent = graphene.Field(lambda: ParentCategoryType)
和parent = graphene.Field(lambda: CategoryType)