Graphene-django - 使用枚举变异类型

Posted

技术标签:

【中文标题】Graphene-django - 使用枚举变异类型【英文标题】:Graphene-django - Mutating types with enums 【发布时间】:2020-12-22 03:31:13 【问题描述】:

所以,我有以下模型:

class Semester(models.Model):
    course = models.ManyToManyField(Course, through='CourseSemester')

    class SemesterType(models.TextChoices):
        A = 'A', 'Winter'
        B = 'B', 'Spring'
        SUMMER = 'SU', 'Summer'

    name = models.CharField(
        max_length=200,
        choices=SemesterType.choices,
        default=SemesterType.A,
    )
    year = models.IntegerField()

我尝试添加一个突变来添加一个新学期。 Graphene-django 似乎会自动为我生成一个 Enum 字段,但我怎样才能在参数中获取它?

根据 github 问题,SemesterType._meta.fields['name'] 之类的东西应该可以工作,但我无法正确处理,即使将其包装在 graphene.Argument 中。

可以告诉 Graphene 不要将其转换为 Enum,但如果可能的话,我宁愿避免这样做。

任何线索如何做到这一点?

【问题讨论】:

【参考方案1】:

你应该添加 convert_choices_to_enum = False 给你的DjangoObjectType

更多信息在Choices to Enum conversion section的文档中

【讨论】:

是的,我知道。这可行,但我宁愿选择直接访问生成的枚举。

以上是关于Graphene-django - 使用枚举变异类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在graphene-django中使用别名

使用graphene-django,是不是可以定义两个节点之间的循环关系?

如何在graphene-django中使用MultipleChoiceFilter?

Graphene-Django 嵌套过滤器(中继)

graphene-django 中的自定义参数

GraphQL graphene-django 基本使用文档