alm*_*gra 7 python graphql graphene-python
我想知道是否有可能获得一个对象的“原始 id”作为查询的结果。每当我向服务器发出请求时,它都会返回节点“全局标识符”,类似于U29saWNpdGFjYW9UeXBlOjEzNTkxOA==.
该查询类似于以下查询:
{
allPatients(active: true) {
edges {
cursor
node {
id
state
name
}
}
}
Run Code Online (Sandbox Code Playgroud)
回报是:
{
"data": {
"edges": [
{
"cursor": "YXJyYXljb25uZWN0aW9uOjA=",
"node": {
"id": "U29saWNpdGFjYW9UeXBlOjEzNTkxOA==",
"state": "ARI",
"name": "Brad"
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
如何在数据库级别(例如“112”)而不是该节点唯一标识符获取对象的“原始”ID?
ps:我在服务器端使用graphene-python和Relay。
小智 6
覆盖 Node 对象中的默认 to_global_id 方法对我有用:
class CustomNode(graphene.Node):
class Meta:
name = 'Node'
@staticmethod
def to_global_id(type, id):
return id
class ExampleType(DjangoObjectType):
class Meta:
model = Example
interfaces = (CustomNode,)
Run Code Online (Sandbox Code Playgroud)
小智 3
第一个选项,删除relay.Node作为objectNode声明的接口。
第二个选项,使用自定义的resolve_id函数返回id原始值。
例子
class objectNode(djangoObjectType):
.... Meta ....
id = graphene.Int(source="id")
def resolve_id("commons args ...."):
return self.id
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
2182 次 |
| 最近记录: |