gpt4 book ai didi

python - 如何为 django 模型和 graphql 突变参数使用单个枚举?

转载 作者:行者123 更新时间:2023-12-04 02:37:29 25 4
gpt4 key购买 nike

我已经定义了包含与枚举对应的文本选项的字段的 Django 模型。 GraphQL API 提供了具有枚举类型参数的突变(不是直接从模型派生的),这些参数应仅接受与模型相同的值。我怎样才能摆脱我的重复?

模型.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 版本
模型.py (对于 Django 版本 >= 3.0)

from django.db import models

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,
)
模型.py (对于 Django 版本 < 3.0)
from enum import Enum
class SomeEnum(Enum):
A = "A"
B = "B"
架构.py:
SomeEnumSchema = graphene.Enum.from_enum(SomeEnum)
class SomeMutation(graphene.Mutation):
class Arguments:
some_enum = SomeEnumSchema(required=True)

关于python - 如何为 django 模型和 graphql 突变参数使用单个枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61014020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com