Как получить текущий экземпляр модели в графен-питоне DjangoObjectType - PullRequest
1 голос
/ 05 апреля 2019

У меня есть класс графен-питон DjangoObjectType , и я хочу добавить пользовательский тип, но я не знаю, как получить экземпляр текущей модели в функции распознавателя. Я следую этому руководству , но не могу найти никакой ссылки.

Это мой 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

Мой вопрос отличается от Средство распознавания графена для объекта, который не имеет модели , потому что у моего объекта есть модель. Я не знаю, почему он был помечен как «возможно дублированный» с такой очевидной разницей. Мой вопрос, действительно, основан на модели.

1 Ответ

0 голосов
/ 05 апреля 2019

Да, это где-то в 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
...