不知道如何转换Django现场技能(<class'taggit.managers.TaggableManager'>)?图

Tsu*_*una 3 python tags django django-taggit graphql

我想改变我的rest终点来graphql和我有一个名为库TaggableManager为一体model fields。任何人都知道这可以与graphql一起使用吗?

提前致谢

小智 7

我制作了一个版本的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')
Run Code Online (Sandbox Code Playgroud)

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

    .
    .
    .
    tags = TaggableManager()

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

Run Code Online (Sandbox Code Playgroud)


Dee*_*ood 5

您必须明确地告诉graphene如何转换TaggableManger要在查询中使用的字段。注册@convert_django_fieldgraphene_django.converter使用模型与之前TaggableManger无论是在现场Queries还是Mutations

例:

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)
Run Code Online (Sandbox Code Playgroud)