Sobes.tech
Middle

Djangoда IntegerChoices эмне үчүн колдонулат?

sobes.tech AI

AIден жооп

Django'da IntegerChoices nomlanmış butun raqamli doimiylarni belgilash uchun ishlatiladi. Bu, model maydonlari bilan bog'liq bo'lishi mumkin bo'lgan, holatlar yoki turlar kabi, belgilangan raqamli qiymatlarning 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, 'Ləğv olundu'

# 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")