Middle
¿Para qué se utiliza IntegerChoices en Django?
sobes.tech AI
Respuesta de la IA
IntegerChoices en Django se utiliza para definir un conjunto de constantes enteras con nombre. Proporciona una forma conveniente y legible de representar un conjunto fijo de valores numéricos, como estados o tipos, que pueden estar asociados con campos de modelos.
Las principales ventajas de usar IntegerChoices:
- Legibilidad del código: Los nombres de las constantes hacen que la intención del código sea más clara que el uso de números "mágicos".
- Mejor soporte en formularios e interfaz de administrador: Django genera por defecto widgets de selección (select widgets) con etiquetas legibles basadas en los nombres de las constantes.
- Prevención de errores: Usar constantes en lugar de valores numéricos directos reduce la probabilidad de errores tipográficos.
- Gestión centralizada: Todos los valores posibles están agrupados en un solo lugar.
Ejemplo de uso:
# choices.py o models.py
from django.db import models
class OrderStatus(models.IntegerChoices):
PENDING = 0, 'En proceso'
PROCESSING = 1, 'En trabajo'
SHIPPED = 2, 'Enviado'
DELIVERED = 3, 'Entregado'
CANCELLED = 4, 'Cancelado'
# models.py
from django.db import models
from .choices import OrderStatus # Si OrderStatus está definido en otro archivo
class Order(models.Model):
status = models.IntegerField(
choices=OrderStatus.choices,
default=OrderStatus.PENDING,
)
created_at = models.DateTimeField(auto_now_add=True)
# En el código
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
print("Pedido entregado")