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

У меня есть класс graphene-python 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

Мой вопрос отличается от преобразователя графена для объекта, у которого нет модели, потому что у моего объекта ЕСТЬ МОДЕЛЬ. Не знаю, почему это было помечено как «возможно дублированное» с такой очевидной разницей. Мой вопрос действительно основан на модели.


person HuLu ViCa    schedule 05.04.2019    source источник
comment
@PetarP нет, это не дублированный вопрос, потому что у моего объекта ЕСТЬ МОДЕЛЬ, и мой вопрос действительно основан на такой модели. Вопрос, на который вы ссылаетесь, имеет отношение к проблеме, которую я пытаюсь решить.   -  person HuLu ViCa    schedule 05.04.2019
comment
ops, извините, неправильно прочитал, удалит.   -  person copser    schedule 05.04.2019
comment
Привет, вот хороший пример в документации   -  person copser    schedule 05.04.2019


Ответы (1)


Да, это где-то в 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
person donnyyy    schedule 05.04.2019