Sobes.tech
Middle

À quoi sert IntegerChoices dans Django?

sobes.tech IA

Réponse de l'IA

IntegerChoices dans Django est utilisé pour définir un ensemble de constantes entières nommées. Il offre une manière pratique et lisible de représenter un ensemble fixe de valeurs numériques, comme des statuts ou des types, qui peuvent être associés à des champs de modèle.

Les principaux avantages de l'utilisation de IntegerChoices :

  • Lisibilité du code : Les noms des constantes rendent l'intention du code plus claire que l'utilisation de nombres "magiques".
  • Meilleur support dans les formulaires et l'interface d'administration : Django génère par défaut des widgets de sélection (select widgets) avec des étiquettes lisibles basées sur les noms des constantes.
  • Prévention des erreurs : L'utilisation de constantes au lieu de valeurs numériques directes réduit la probabilité d'erreurs de frappe.
  • Gestion centralisée : Toutes les valeurs possibles sont regroupées en un seul endroit.

Exemple d'utilisation :

# choices.py ou models.py
from django.db import models

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'En attente'
    PROCESSING = 1, 'En cours'
    SHIPPED = 2, 'Expédié'
    DELIVERED = 3, 'Livré'
    CANCELLED = 4, 'Annulé'

# models.py
from django.db import models
from .choices import OrderStatus # Si OrderStatus est défini dans un autre fichier

class Order(models.Model):
    status = models.IntegerField(
        choices=OrderStatus.choices,
        default=OrderStatus.PENDING,
    )
    created_at = models.DateTimeField(auto_now_add=True)

# Dans le code
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Commande livrée")