Sobes.tech
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")