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