如何在graphene-python DjangoObjectType中获取当前模型实例

问题描述 投票:1回答:1

我有一个graphene-python DjangoObjectType类,我想添加一个自定义类型,但我不知道如何在解析器函数中获取当前模型实例。我关注this tutorial,但我找不到任何参考。

这是我的DjangoObjectTypeClass:

class ReservationComponentType(DjangoObjectType):
    component_str = graphene.String()

    class Meta:
        model = ReservationComponent

    def resolve_component_str(self, info):
        # How can I get the current ReservationComponent instance here?. I guess it is somewehere in 'info', 
        # but documentation says nothing about it

        current_reservation_component = info.get('reservation_component')
        component = current_reservation_component.get_component()

        return component.name

我的问题与Graphene resolver for an object that has no model不同,因为我的对象有一个模型。我不知道为什么它被标记为“可能重复”,具有如此明显的差异。实际上,我的问题是基于该模型。

python django graphene-python
1个回答
0
投票

是的,它在info的某处,即:

type_model = info.parent_type.graphene_type._meta.model

但是如果你使用DjangoObjectType,那么实例将被传递给self。所以你可能会采取另一种方式:

class ReservationComponentType(DjangoObjectType):
    component_str = graphene.String()

    class Meta:
        model = ReservationComponent

    def resolve_component_str(self, info):
        # self is already an instance of type's model (not sure if it is in all cases):
        component_class = self.__class__

        current_reservation_component = info.get('reservation_component')
        component = current_reservation_component.get_component()

        return component.name
© www.soinside.com 2019 - 2024. All rights reserved.