Sobes.tech
Middle

Django'da IntegerChoices ne işe yarar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Django'da IntegerChoices, isimlendirilmiş tam sayı sabitleri kümesini tanımlamak için kullanılır. Bu, model alanlarıyla ilişkilendirilebilecek statüler veya türler gibi sabit sayısal değerlerin sabit ve okunabilir bir şekilde temsil edilmesini sağlar.

IntegerChoices kullanmanın temel avantajları:

  • Kod okunabilirliği: Sabitlerin isimleri, "sihirli" sayılar kullanmaktan daha anlaşılır bir kod amacı sağlar.
  • Formlar ve yönetici arayüzünde gelişmiş destek: Django, varsayılan olarak, sabit isimlerine dayalı okunabilir etiketlerle seçim widget'ları (select widgets) oluşturur.
  • Hata önleme: Sabitler kullanmak, doğrudan sayısal değerler yerine, yazım hatası yapma riskini azaltır.
  • Merkezi yönetim: Tüm olası değerler tek bir yerde toplanır.

Kullanım örneği:

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

class OrderStatus(models.IntegerChoices):
    PENDING = 0, 'Beklemede'
    PROCESSING = 1, 'İşlemde'
    SHIPPED = 2, 'Gönderildi'
    DELIVERED = 3, 'Teslim edildi'
    CANCELLED = 4, 'İptal edildi'

# models.py
from django.db import models
from .choices import OrderStatus # Eğer OrderStatus başka bir dosyada tanımlıysa

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

# Kodda
order = Order.objects.create(status=OrderStatus.PROCESSING)
if order.status == OrderStatus.DELIVERED:
    print("Sipariş teslim edildi")