【问题标题】:Overwriting django Integer choices output in graphene覆盖石墨烯中的 django 整数选择输出
【发布时间】:2021-09-19 22:33:03
【问题描述】:

我正在使用石墨烯和石墨烯-django,但我在选择 IntegerField 时遇到了问题。石墨烯创建一个枚举,如果值为 1,则输出为“A_1”;如果值为 2,则为“A_2”,依此类推。示例:

# model
class Foo(models.Model):
    score = models.IntegerField(choices=((1, 1), (2, 2), (3, 3), (4, 4), (5, 5)))

# query

query {
    foo {
       score
    }
}

# response 

{
  "data": {
    "foo": {
      "source": "A_1"
    }
  }
}

我怎样才能覆盖这个输出?

(ps:我从旧帖子中复制了这个问题,但今天没有任何适当的评论,因为它是从 4.​​5 年前开始的。我今天遇到了完全相同的问题) 谢谢

【问题讨论】:

    标签: python django graphene-python


    【解决方案1】:

    其实我已经在石墨烯文档中找到了正确的答案,

    我们应该在模式突变的节点类下添加一个类似convert_choices_to_enum = False 的行来禁用这种自动转换。

    文档页面的确切链接是https://docs.graphene-python.org/projects/django/en/latest/queries/

    【讨论】:

      【解决方案2】:
      def get_score(enum_output):
          return enum_output.split('_')[1]
      
      ####
      {
          "data": {
          "foo": {
              "source": get_score("A_1")
          }
       }
      

      【讨论】:

      • 感谢您提供答案。您能否编辑您的答案以包括对您的代码的解释?这将有助于未来的读者更好地了解正在发生的事情,尤其是那些刚接触该语言并难以理解概念的社区成员。
      猜你喜欢
      • 2017-06-13
      • 2018-01-11
      • 2020-09-01
      • 2021-09-25
      • 2019-12-20
      • 2019-08-08
      • 2020-09-05
      • 2017-08-20
      • 2020-09-03
      相关资源
      最近更新 更多