Python 如何使用django_graphene解析django模型的自定义字段?

Python 如何使用django_graphene解析django模型的自定义字段?,python,django,graphql,graphene-python,Python,Django,Graphql,Graphene Python,看看graphene_django,我看到他们有一堆解析程序,将django模型字段映射到graphene类型 我有一个子类的我也希望被拿起 : 我知道我可以为一个查询编写一个单独的字段和解析器对,但我更希望它作为该模型模式的一部分可用 我意识到我能做的是: class RecipeQuery: custom_field = graphene.JSONString(id=graphene.ID(required=True)) def resolve_custom_field(s

看看graphene_django,我看到他们有一堆解析程序,将django模型字段映射到graphene类型

我有一个子类的我也希望被拿起

:

我知道我可以为一个查询编写一个单独的字段和解析器对,但我更希望它作为该模型模式的一部分可用

我意识到我能做的是:

class RecipeQuery:
    custom_field = graphene.JSONString(id=graphene.ID(required=True))

    def resolve_custom_field(self, info, **kwargs):
       id = kwargs.get('id')
       instance = get_item_by_id(id)
       return instance.custom_field.to_json()
但是--这意味着要进行一次单独的往返,获取id,然后获取该项的自定义_字段,对吗


是否有一种方法可以将其视为RecipeType模式的一部分?

好的,我可以使用以下方法使其工作:

# schema
class RecipeType(DjangoObjectType):
    class Meta:
        model = Recipe

    custom_field = graphene.JSONString(resolver=lambda my_obj, resolve_obj: my_obj.custom_field.to_json())
custom_字段
有一个
to_json
方法)

我在没有深入了解石墨烯类型和django模型场类型之间的映射中发生了什么的情况下理解了它

基于此:

相同的函数名,但参数化方式不同

# schema
class RecipeType(DjangoObjectType):
    class Meta:
        model = Recipe

    custom_field = graphene.JSONString(resolver=lambda my_obj, resolve_obj: my_obj.custom_field.to_json())