我已经用包含对应于枚举的文本选择的字段定义了Django模型。GraphQL API提供了带有enum类型参数的突变(不是直接从模型派生的),该类型参数应仅接受与模型相同的值。我怎样才能摆脱我的怀疑
型号.py:
class SomeModel(models.Model):
class SomeEnum(models.TextChoices):
A = "A", _("Option A")
B = "B", _("Option B")
enum_field = models.CharField(
max_length=1,
choices=SomeEnum.choices,
default=SomeEnum.A,
)
schema.py:
class SomeEnumSchema(graphene.Enum):
A = "A"
B = "B"
class SomeMutation(graphene.Mutation):
class Arguments:
some_enum = SomeEnumSchema(required=True)
您可以使用
graphene.Enum.from_enum()
此函数可以将正常的
Enum
类型转换为graphene.Enum
请注意
models.TextChoices
仅适用于3.0以上的Dajango版本models.py(适用于Django版本>;=3.0)
models.py(适用于Django版本<;3.0)
schema.py:
如果您想在自定义突变中使用枚举,那么可以像这样使用
graphine.Enum
我建议使用
PermisionEnum(required=True)
方法,因为有了它PermisionEnum
类可以跨不同的突变重用。当您像我对scope
文件那样声明枚举时,这是不可能的相关问题 更多 >
编程相关推荐