Graphene-Django и свойства модели

Предположим, что модель Django похожа на эту:

  class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.PROTECT)
    name = models.CharField(max_length=255)
    other_alias = models.CharField(blank=True,null=True,max_length=255)

    @property
    def profile_name(self):
        if self.other_alias:
            return self.other_alias
        else:
            return self.name

Я использую Graphene-Django с этим проектом, и я успешно создал схему для описания типа профиля и могу получить к нему надлежащий доступ через запрос GraphQL. Однако я не вижу способа сделать это свойство доступным.

Предполагается, что я должен удалить всю логику стиля свойств из моих моделей Django и вместо этого использовать GraphQL только с необработанной информацией в модели, а затем выполнять эту логику вместо этого в том месте, где я использую данные GraphQL (например, в Приложение React, которое его использует)?


person Matthew Johnston    schedule 22.03.2017    source источник


Ответы (1)


В объекте схемы для профиля вы можете добавить поле String с источником:

class Profile(DjangoObjectType):
    profile_name = graphene.String(source='profile_name')
    class Meta:
        model = ProfileModel
        interfaces = (relay.Node, )
person Yacine Filali    schedule 23.03.2017
comment
Это сэкономило мне СООО много времени. Спасибо! - person lgants; 22.05.2018