Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Enum.from_enum() fails with Django IntegerChoices

Aperta
#1,541 0 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
django, graphql, python
Ambito
api, backend

Direzione di ricerca

Parti da graphene.Enum.from_enum() e dal comportamento di GrapheneEnumType generato, usando l’esempio fornito di Django IntegerChoices per riprodurre il problema. Confronta la gestione di TextChoices con quella di IntegerChoices; il lavoro è completato quando valori come 1, 2 e 9 possono essere rappresentati dall’enum Graphene generato senza l’errore segnalato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

🐛 bug

Current Behavior

I am working in a Django Python codebase that has a GraphQL schema. A lot of TextChoices are used in our GraphQL schema and, to properly represent these we use the provided graphene.Enum.from_enum() function.

This same approach doesn't seem to work with Django's IntegerChoices. It seems when graphene generates a GrapheneEnumType, the values are created with the IntegerChoices member names. This makes it so the IntegerChoices value cannot be represented with the generated GrapheneEnumType.

This results in an error like the following:
"Enum 'Status' cannot represent value: 2"

Expected Behavior

A value from a Django IntegerChoices object is usable to get the appropriate GrapheneEnumType value name.

motivation

To allow for graphene.Enum.from_enum() to be usable by Django's IntegerChoices class.

Environment

  • Graphene Version: 3.3
  • Graphene Django Version: 3.2.0
  • Graphene Version: 3.3
  • Django Version: 4.1.12
  • Python Version: 3.10

Code Example

class Status(models.IntegerChoices):
    COMPLETED = 1, "Completed"
    IN_PROGRESS = 2, "In progress"
    ERRORED = 9, "Errored"


StatusChoices = graphene.Enum.from_enum(Status)

class Process(graphene.ObjectType):
    reference = graphene.String(description="The process reference.")
    status = graphene.Field(
        StatusChoices,
        description="Current process status.",
    )

This results in an error like the following:
"Enum 'Status' cannot represent value: 2"

Lingua principale
Python
Stelle
8.2k
Fork
818
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di graphql-python/graphene

Tutte le issue di graphql-python/graphene

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.