Sobes.tech
Middle

Na čo slúži IntegerChoices v Django?

sobes.tech AI

Odpoveď od AI

IntegerChoices v Django sa koristi za definovanie sady pomenovaných celých číselných konštánt. Poskytuje pohodlný a čitateľný spôsob reprezentácie pevného súboru číselných hodnôt, ako sú stavy alebo typy, ktoré môžu byť spojené s poľami modelu.

Hlavné výhody používania IntegerChoices:

  • Čitateľnosť kódu: Názvy konštánt robia zámer kódu jasnejším než použitie "magických" čísel.
  • Lepšia podpora v formulároch a administračnom rozhraní: Django automaticky generuje widgety na výber (select widgets) s čitateľnými štítkami založenými na názvoch konštánt.
  • Prevencia chýb: Použitie konštánt namiesto priameho zadávania číselných hodnôt znižuje pravdepodobnosť preklepov.
  • Centralizované riadenie: Všetky možné hodnoty sú zhromaždené na jednom mieste.

Príklad použitia:

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

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'Čaká na spracovanie'
    PROCESSING = 1, 'V procese'
    SHIPPED = 2, 'Odoslané'
    DELIVERED = 3, 'Doručené'
    CANCELLED = 4, 'Zrušené'

# models.py
from django.db import models
from .choices import OrderStatus # Ak je OrderStatus definovaný v inom súbore

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

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