Sobes.tech
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")