【问题标题】:Graphene: customizing how Enum is serializedGraphene:自定义 Enum 的序列化方式
【发布时间】:2022-12-31 19:43:25
【问题描述】:

我们的后端使用 SQLAlchemy 作为我们的 ORM,我最近一直在尝试公开一个 graphql API,但我很难弄清楚如何自定义 Enum 是如何被石墨烯序列化的。

我们的 SqlAlchemy 对象都继承自我们编写的 BaseModel,并且我们创建了自己的 BaseEnum,所有 db.Enum 字段都继承了它,我们使用它来自定义包含在客户端有效负载中的字段,即如下,

someEnum: {
    'value': <some_value>,
    'label': <some_label>,
}

我一直无法弄清楚如何让石墨烯进行相同的序列化(或者如果它甚至可能/违反 grapqhl 的精神)。由于这些Enums作为字符串存储在我们的数据库中,如THE_ENUM_VALUE,这都是石墨烯的回报。

所以我想我有两个问题:

  1. 这甚至是使用 graphql 返回此类负载的正确方法吗?或者像这样的查询会更合适
    {
      someModel {
        someEnum {
          label
          value
        }
      }
    }
    
    1. 我将如何覆盖序列化全部Enum 石墨烯返回的字段,所以我们不必为每个Enum 字段编写自定义解析器? (有数百个)

【问题讨论】:

    标签: python graphql graphene-python graphene-django graphene-sqlalchemy


    【解决方案1】:

    对于寻找第二个问题的答案的每个人

           class MyEnum(graphene.Enum,):
                value: <some_value>,
                label: <some_label>,
            
                @property
                def description(self):
                    return self.value
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多