Middle
Do czego służy IntegerChoices w Django?
sobes.tech AI
Odpowiedź od AI
IntegerChoices w Django służy do definiowania zestawu nazwanych stałych całkowitych. Zapewnia wygodny i czytelny sposób reprezentowania stałego zestawu wartości numerycznych, takich jak statusy lub typy, które mogą być powiązane z polami modelu.
Główne zalety korzystania z IntegerChoices:
- Czytelność kodu: Nazwy stałych sprawiają, że intencja kodu jest bardziej jasna niż użycie "magicznych" liczb.
- Lepsze wsparcie w formularzach i interfejsie administratora: Django domyślnie generuje widżety wyboru (select widgets) z czytelnymi etykietami opartymi na nazwach stałych.
- Zapobieganie błędom: Użycie stałych zamiast bezpośrednich wartości liczbowych zmniejsza prawdopodobieństwo literówek.
- Zarządzanie centralne: Wszystkie możliwe wartości są zebrane w jednym miejscu.
Przykład użycia:
# choices.py lub models.py
from django.db import models
class OrderStatus(models.IntegerChoices):
PENDING = 0, 'Oczekujące'
PROCESSING = 1, 'W trakcie'
SHIPPED = 2, 'Wysłane'
DELIVERED = 3, 'Dostarczone'
CANCELLED = 4, 'Anulowane'
# models.py
from django.db import models
from .choices import OrderStatus # Jeśli OrderStatus jest zdefiniowany w innym pliku
class Order(models.Model):
status = models.IntegerField(
choices=OrderStatus.choices,
default=OrderStatus.PENDING,
)
created_at = models.DateTimeField(auto_now_add=True)
# W kodzie
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
print("Zamówienie dostarczone")