我想创建一个通用的get_node_from_global_id,因此我需要获取查询所请求的根模型,然后从该表返回一行。为此,我想使用model = getattr(Query,info.field_name).field_type.Meta.model
。
第一部分getattr(Query,info.field_name).field_type
使用TableNameNode
从Query
让我info.field_name
。但是,当我尝试访问...Meta.model
时,我收到一条错误消息,指出Meta
上没有属性TableNameNode
。我可以看到有一个嵌套的类Meta
,该如何访问它?
from graphene_django import DjangoObjectType
from graphene import relay
class CustomNode(relay.Node):
class Meta:
name = 'Node'
@staticmethod
def to_global_id(type, id):
#returns a non-encoded ID
return id
@staticmethod
def get_node_from_global_id(info, global_id, only_type=None):
user = info.context.user
model = getattr(Query,info.field_name).field_type.Meta.model
#return row here...
pass
class Query(object):
tablename = CustomNode.Field(TableNameNode)
class TableNameNode(DjangoObjectType):
class Meta:
model = TableName
interfaces = (CustomNode,)
答案 0 :(得分:0)
深入研究here之后,我想到应该尝试._meta
访问Meta
嵌套类。我不知道其背后的原理,但是当我将代码更改为model = getattr(Query,info.field_name).field_type._meta.model
时,它就起作用了。