如何使用石墨烯和中继在CustomNode上访问元

时间:2018-11-29 22:29:17

标签: django graphene-python

我想创建一个通用的get_node_from_global_id,因此我需要获取查询所请求的根模型,然后从该表返回一行。为此,我想使用model = getattr(Query,info.field_name).field_type.Meta.model

第一部分getattr(Query,info.field_name).field_type使用TableNameNodeQuery让我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,)

1 个答案:

答案 0 :(得分:0)

深入研究here之后,我想到应该尝试._meta访问Meta嵌套类。我不知道其背后的原理,但是当我将代码更改为model = getattr(Query,info.field_name).field_type._meta.model时,它就起作用了。