我希望能够使用人工主键而不是不透明的中继 ID 编写一个看起来像这样的查询:
query {
issue(pk: 10) {
pk
state
}
}
我已经能够pk
从模型中添加 int 字段;但是,我无法弄清楚如何查询它(而且我对如何为此切换到自定义过滤器集感到有些困惑)。
from django.db import models
import graphene
from graphene import relay
class Issues(models.Model):
state = models.CharField(default='')
text = models.TextField(default='')
class IssueNode(DjangoObjectType):
pk = graphene.Int(source='pk')
class Meta:
model = Issue
interfaces = (relay.Node,)
filter_fields = ['pk', 'state']
class Query(graphene.ObjectType):
issue = relay.Node.Field(IssueNode)
issues = DjangoFilterConnectionField(IssueNode)
这将引发关于以下内容的错误pk
:
TypeError: 'Meta.fields' contains fields that are not defined on this FilterSet: pk
通过此设置,我可以编写如下查询:
query {
issue(id: 'ascadf2e31af=') {
state
}
}
但由于该应用程序以前使用人类可读的 ID,我也想支持它。
关于如何设置自定义过滤器集的任何想法,或者是否有使用 graphene-django 执行此操作的本地方法?