Sobes.tech
Middle

IntegerChoices дар Django барои чӣ истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

IntegerChoices дар Django истифода мешавад барои муайян кардани маҷмӯи доимиятҳои рақамӣ бо ном. Он роҳи қулай ва хонданӣ барои намояндагии маҷмӯи доимии арзишҳои рақамӣ, масалан, статусҳо ё намудҳо, ки метавонанд бо майдонҳои модел пайваст шаванд, пешниҳод мекунад.

Бартариҳои асосии истифодаи IntegerChoices:

  • Хонданӣ будани коди: Номҳои доимиятҳо нияти коди бештар равшан мекунанд, нисбат ба истифодаи рақамҳои "сиҳир".
  • Дастгирии беҳтар дар формҳо ва интерфейси администратор: Django ба таври худкор виджетҳои интихоб (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("Фармоиш расонида шуд")