Sobes.tech
Middle

K čemu slouží IntegerChoices v Django?

sobes.tech AI

Odpověď od AI

V Django se IntegerChoices používá k definování sady pojmenovaných celočíselných konstant. Poskytuje pohodlný a čitelný způsob, jak reprezentovat pevnou sadu číselných hodnot, například stavy nebo typy, které mohou být spojeny s poli modelu.

Hlavní výhody používání IntegerChoices:

  • Čitelnost kódu: Názvy konstant činí záměr kódu jasnější než použití "magických" čísel.
  • Lepší podpora ve formulářích a administračním rozhraní: Django automaticky generuje widgety pro výběr (select widgets) s čitelnými štítky založenými na názvech konstant.
  • Prevence chyb: Použití konstant místo přímých číselných hodnot snižuje pravděpodobnost překlepů.
  • Centralizované řízení: Všechny možné hodnoty jsou shromážděny na jednom místě.

Příklad použití:

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

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'Čeká na vyřízení'
    PROCESSING = 1, 'V procesu'
    SHIPPED = 2, 'Odesláno'
    DELIVERED = 3, 'Doručeno'
    CANCELLED = 4, 'Zrušeno'

# models.py
from django.db import models
from .choices import OrderStatus # Pokud je OrderStatus definován v jiném souboru

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

# V kódu
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Objednávka doručena")