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

问题描述

所以,我有以下模型:

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,但是我宁愿避免这种情况。

任何提示如何正确处理?

解决方法

您应该添加 convert_choices_to_enum = False 到您的DjangoObjectType

更多信息,请参见Choices to Enum conversion section

中的文档