Sobes.tech
Middle

A cosa serve IntegerChoices in Django?

sobes.tech AI

Risposta dell'AI

IntegerChoices in Django viene utilizzato per definire un insieme di costanti intere con nome. Offre un modo comodo e leggibile per rappresentare un insieme fisso di valori numerici, come stati o tipi, che possono essere associati ai campi del modello.

Vantaggi principali dell'uso di IntegerChoices:

  • Leggibilità del codice: I nomi delle costanti rendono l'intento del codice più chiaro rispetto all'uso di numeri "magici".
  • Migliore supporto nei moduli e nell'interfaccia di amministrazione: Django genera di default widget di selezione (select widgets) con etichette leggibili basate sui nomi delle costanti.
  • Prevenzione degli errori: L'uso di costanti invece di valori numerici diretti riduce la probabilità di errori di battitura.
  • Gestione centralizzata: Tutti i valori possibili sono raccolti in un unico posto.

Esempio di utilizzo:

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

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'In attesa'
    PROCESSING = 1, 'In lavorazione'
    SHIPPED = 2, 'Spedito'
    DELIVERED = 3, 'Consegnato'
    CANCELLED = 4, 'Annullato'

# models.py
from django.db import models
from .choices import OrderStatus # Se OrderStatus è definito in un altro file

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

# Nel codice
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Ordine consegnato")