Sobes.tech
Middle

Mire használják az IntegerChoices-t a Django-ban?

sobes.tech MI

Válasz az MI-től

A Django IntegerChoices-t arra használják, hogy névvel ellátott egész állandókat definiáljanak. Ez kényelmes és olvasható módot kínál egy fix numerikus értékkészlet, például státuszok vagy típusok, modellezésére, amelyek a modell mezőkhöz kapcsolódhatnak.

A IntegerChoices használatának fő előnyei:

  • Kód olvashatósága: A konstansok nevei világosabbá teszik a kód szándékát, mint a "varázs" számok használata.
  • Jobb támogatás űrlapokban és adminisztrációs felületen: A Django alapértelmezés szerint választó widgeteket generál (select widgets), amelyek olvasható címkéket tartalmaznak a konstans nevek alapján.
  • Hibák megelőzése: A konstansok használata a közvetlen numerikus értékek helyett csökkenti a gépelési hibák valószínűségét.
  • Központosított kezelés: Minden lehetséges érték egy helyen van összegyűjtve.

Használati példa:

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

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'Függőben'
    PROCESSING = 1, 'Folyamatban'
    SHIPPED = 2, 'Küldve'
    DELIVERED = 3, 'Kiszállítva'
    CANCELLED = 4, 'Törölve'

# models.py
from django.db import models
from .choices import OrderStatus # Ha az OrderStatus másik fájlban van

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

# A kódban
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Rendelés kézbesítve")