Sobes.tech
Middle

La ce se folosește IntegerChoices în Django?

sobes.tech AI

Răspuns de la AI

IntegerChoices în Django este utilizat pentru a defini un set de constante întregi denumite. Oferă o modalitate convenabilă și ușor de citit de a reprezenta un set fix de valori numerice, cum ar fi stări sau tipuri, care pot fi asociate cu câmpurile modelului.

Principalele avantaje ale utilizării IntegerChoices:

  • Citibilitatea codului: Numele constantelor fac intenția codului mai clar decât utilizarea numerelor "magice".
  • Suport îmbunătățit în formulare și interfața de administrator: Django generează implicit widget-uri de selecție (select widgets) cu etichete ușor de citit bazate pe numele constantelor.
  • Prevenirea erorilor: Utilizarea constantelor în loc de valori numerice directe reduce probabilitatea de greșeli de tastare.
  • Gestionare centralizată: Toate valorile posibile sunt adunate într-un singur loc.

Exemplu de utilizare:

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

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'În așteptare'
    PROCESSING = 1, 'În procesare'
    SHIPPED = 2, 'Expediat'
    DELIVERED = 3, 'Livrat'
    CANCELLED = 4, 'Anulat'

# models.py
from django.db import models
from .choices import OrderStatus # Dacă OrderStatus este definit într-un alt fișier

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

# În cod
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Comanda livrată")