graphene_django使用DjangoFilterConnectionField报类型无connection错误如何解决
问题根因
报错的核心原因是TradeType的Meta配置字段拼写错误:你使用了单数形式的interface,而graphene要求使用复数形式interfaces。缺少后缀s的情况下,Relay Node接口没有被正确注册到TradeType上,框架也就不会自动生成对应的Connection类型,最终导致DjangoFilterConnectionField找不到关联的Connection实例,抛出断言错误。
修复方案
将TradeType的Meta配置修改为如下内容即可:
class TradeType(DjangoObjectType): class Meta: model = Trade filter_fields = { 'id': ['exact', 'range', 'in', 'gte', 'lt'], 'updated': ['gte', 'lt'], 'created': ['gte', 'lt'] } # 单数interface改为复数interfaces interfaces = (graphene.relay.Node,) class Query(graphene.ObjectType): trades = DjangoFilterConnectionField(TradeType)
补充排查点
如果修改拼写后仍存在报错,可检查以下两项:
- 确认
graphene.relay.Node已正确导入,无拼写错误 - 没有手动覆盖TradeType的
__init_subclass__或_meta相关属性,避免框架自动生成Connection的逻辑被阻断
内容的提问来源于stack exchange,提问作者alit8
相关产品推荐
相关产品推荐

