【问题标题】:Don't know how to convert the Django field skills (<class 'taggit.managers.TaggableManager'>)? graphql不知道如何转换 Django 领域技能(<class 'taggit.managers.TaggableManager'>)?图形
【发布时间】:2018-04-20 08:29:31
【问题描述】:

我正在尝试将我的rest 端点更改为graphql,并且我有一个名为TaggableManager 的库作为model fields 之一。有人知道这如何与 graphql 一起工作吗?

提前致谢

【问题讨论】:

    标签: python django tags graphql django-taggit


    【解决方案1】:

    我制作了一个版本的Deepak Sood 回答什么对我有用

    from graphene import String, List
    from taggit.managers import TaggableManager
    from graphene_django.converter import convert_django_field
    
    @convert_django_field.register(TaggableManager)
    def convert_field_to_string(field, registry=None):
        return List(String, source='get_tags')
    

    在标注器模型中,我创建了一个属性名称 get_tags:

        .
        .
        .
        tags = TaggableManager()
    
        @property
        def get_tags(self):
            return self.tags.all()
    
    

    【讨论】:

      【解决方案2】:

      您必须明确告诉石墨烯如何转换TaggableManger 字段以在查询中使用。在QueriesMutations 中使用带有TaggableManger 字段的模型之前,从graphene_django.converter 注册@convert_django_field

      例子:

      from graphene_django.converter import convert_django_field
      from taggit.managers import TaggableManager
      
      # convert TaggableManager to string representation
      @convert_django_field.register(TaggableManager)
      def convert_field_to_string(field, registry=None):
          return String(description=field.help_text, required=not field.null)
      

      【讨论】:

      • 我收到“标签”:“catalog.Product.None”。不工作!
      猜你喜欢
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多