Sobes.tech
Middle

Za šta se koristi IntegerChoices u Django?

sobes.tech АИ

Одговор од АИ

IntegerChoices у Django се користи за дефинисање скупа именованих целобројних константи. Он пружа погодан и читљив начин за представљање фиксног скупа бројчаних вредности, као што су статуси или типови, који могу бити повезани са пољима модела.

Главне предности коришћења IntegerChoices:

  • Читљивост кода: Имена константи чине намјеру кода јаснијом у односу на коришћење "магичних" бројева.
  • Боља подршка у формама и административном интерфејсу: Django по подразумевану генерише widget-ове за избор (select widgets) са читљивим етикетама заснованим на именима константи.
  • Превенција грешака: Коришћење константи уместо директних бројчаних вредности смањује вероватноћу правописних грешака.
  • Централизовано управљање: Све могуће вредности су сакупљене на једном месту.

Пример употребе:

# choices.py или models.py
from django.db import models

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'На чекању'
    PROCESSING = 1, 'У току'
    SHIPPED = 2, 'Послато'
    DELIVERED = 3, 'Достављено'
    CANCELLED = 4, 'Отказано'

# models.py
from django.db import models
from .choices import OrderStatus # Ако је OrderStatus дефинисан у другом фајлу

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

# У коду
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Наредба достављена")