Я создаю простое приложение для хранения рецептов, которое использует пакет Graphene для GraphQL.До сих пор я мог очень легко использовать формы Django в своих мутациях, однако одно из полей моей модели - это действительно Enum, и я хотел бы представить его в Graphene / GraphQL как таковом.
Мой enum:
class Unit(Enum):
# Volume
TEASPOON = "teaspoon"
TABLESPOON = "tablespoon"
FLUID_OUNCE = "fl oz"
CUP = "cup"
US_PINT = "us pint"
IMPERIAL_PINT = "imperial pint"
US_QUART = "us quart"
IMPERIAL_QUART = "imperial quart"
US_GALLON = "us gallon"
IMPERIAL_GALLON = "imperial gallon"
MILLILITER = "milliliter"
LITER = "liter"
# Mass and Weight
POUND = "pound"
OUNCE = "ounce"
MILLIGRAM = "milligram"
GRAM = "gram"
KILOGRAM = "kilogram"
Моя модель:
class RecipeIngredient(TimeStampedModel):
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='ingredients')
direction = models.ForeignKey(RecipeDirection, on_delete=models.CASCADE, null=True, related_name='ingredients')
quantity = models.DecimalField(decimal_places=2, max_digits=10)
unit = models.TextField(choices=Unit.as_tuple_list())
Моя форма:
class RecipeIngredientForm(forms.ModelForm):
class Meta:
model = RecipeIngredient
fields = (
'recipe',
'direction',
'quantity',
'unit',
)
Моя мутация:
class CreateRecipeIngredientMutation(DjangoModelFormMutation):
class Meta:
form_class = RecipeIngredientForm
exclude_fields = ('id',)
Я создалэто графеновое перечисление UnitEnum = Enum.from_enum(Unit)
однако я не смог достать графен, чтобы взять его.Я попытался добавить его в CreateRecipeIngredientMutation
как обычное поле, например unit = UnitEnum()
, а также в класс Input для этой мутации.На данный момент самым близким, что я получил, является выпуск Github , сделанный некоторое время назад.После игры с классом в оболочке iPython, я думаю Я мог бы просто сделать CreateRecipeIngredientMutation.Input.unit.type.of_type = UnitEnum()
, но это ужасно.