通过graphene django中的主键查找(带继电器)

通过graphene django中的主键查找(带继电器),django,graphql,graphene-python,graphene-django,Django,Graphql,Graphene Python,Graphene Django,我希望能够使用人工主键而不是不透明的中继ID编写一个如下所示的查询: query { issue(pk: 10) { pk state } } 我已经能够从模型中添加intpk字段;然而,我还没有弄清楚如何查询它(我有点困惑如何切换到自定义过滤器集) 这将引发关于pk的错误: TypeError: 'Meta.fields' contains fields that are not defined on this FilterSet: pk 通

我希望能够使用人工主键而不是不透明的中继ID编写一个如下所示的查询:

query {
    issue(pk: 10) {
        pk
        state
    }
}
我已经能够从模型中添加int
pk
字段;然而,我还没有弄清楚如何查询它(我有点困惑如何切换到自定义过滤器集)

这将引发关于
pk
的错误:

TypeError: 'Meta.fields' contains fields that are not defined on this FilterSet: pk
通过此设置,我可以编写如下查询:

query {
    issue(id: 'ascadf2e31af=') {
        state
    }
}
但由于应用程序以前使用的是人类可读的ID,因此我也希望支持这一点


关于如何设置自定义过滤器集,或者是否有一种使用graphene django的原生方法,您有什么想法吗?

您可能只想使用默认的
graphene.Field
并将其添加到您的代码中,如下所示:

import graphene

from django.shortcuts import get_object_or_404


class Query(graphene.ObjectType):
   issue_by_pk = Field(IssueNode, pk=graphene.Int())

   def resolve_issue_by_pk(parent, info, **kwargs):
      pk = kwargs.get('pk')
      return get_object_or_404(models.Issue, pk=pk)


您的graphQL查询

query findIssue {
   issueByPk(pk:1){
      id # will return relay id
   }
}
让我知道这是否适合你

query findIssue {
   issueByPk(pk:1){
      id # will return relay id
   }
}