Sobes.tech
Middle

Django'da IntegerChoices nima uchun ishlatiladi?

sobes.tech AI

AIdan javob

Django'da IntegerChoices, nomli raqamli doimiylarni belgilash uchun ishlatiladi. Bu, model maydonlari bilan bog'liq bo'lishi mumkin bo'lgan, statuslar yoki turlar kabi, belgilangan raqamli qiymatlar to'plamini qulay va o'qilishi oson tarzda ifodalash imkonini beradi.

IntegerChoices dan foydalanishning asosiy afzalliklari:

  • Kod o'qilishi: Doimiylarning nomlari, "sihirli" raqamlar o'rniga, kodning ma'nosini yanada aniqroq qiladi.
  • Forma va administrator interfeysida yaxshilangan qo'llab-quvvatlash: Django, odatda, doimiy nomlariga asoslangan o'qilishi oson etiketkalar bilan tanlov vidjetlarini (select widgets) avtomatik ravishda yaratadi.
  • Xatoliklarni oldini olish: Doimiylardan foydalanish, to'g'ridan-to'g'ri raqamli qiymatlardan foydalanishga nisbatan, yozishda xatolik qilish ehtimolini kamaytiradi.
  • Markazlashtirilgan boshqaruv: Barcha mumkin bo'lgan qiymatlar bitta joyda to'plangan.

Foydalanish misoli:

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

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'Kutilmoqda'
    PROCESSING = 1, 'Ish jarayonida'
    SHIPPED = 2, 'Yuborildi'
    DELIVERED = 3, 'Yetkazildi'
    CANCELLED = 4, 'Bekor qilindi'

# models.py
from django.db import models
from .choices import OrderStatus # Agar OrderStatus boshqa faylda bo'lsa

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

# Kodda
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Buyurtma yetkazildi")