Middle
Para que é que serve o IntegerChoices no Django?
sobes.tech IA
Resposta da IA
IntegerChoices no Django é usado para definir um conjunto de constantes inteiras nomeadas. Ele fornece uma forma conveniente e legível de representar um conjunto fixo de valores numéricos, como estados ou tipos, que podem estar associados a campos de modelos.
As principais vantagens de usar IntegerChoices:
- Legibilidade do código: Os nomes das constantes tornam a intenção do código mais clara do que o uso de números "mágicos".
- Melhor suporte em formulários e interface de administração: Django gera por padrão widgets de seleção (select widgets) com etiquetas legíveis com base nos nomes das constantes.
- Prevenção de erros: Usar constantes em vez de valores numéricos diretos reduz a probabilidade de erros de digitação.
- Gestão centralizada: Todos os valores possíveis estão agrupados em um só lugar.
Exemplo de uso:
# choices.py ou models.py
from django.db import models
class OrderStatus(models.IntegerChoices):
PENDING = 0, 'Por processar'
PROCESSING = 1, 'Em processamento'
SHIPPED = 2, 'Enviado'
DELIVERED = 3, 'Entregue'
CANCELLED = 4, 'Cancelado'
# models.py
from django.db import models
from .choices import OrderStatus # Se OrderStatus estiver definido noutra ficha
class Order(models.Model):
status = models.IntegerField(
choices=OrderStatus.choices,
default=OrderStatus.PENDING,
)
created_at = models.DateTimeField(auto_now_add=True)
# No código
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
print("Encomenda entregue")