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