SORU
13 Temmuz 2009, PAZARTESİ


Set Django seçimler=... adıyla İntegerField

Seçimler bir seçenek ile örnek bir alan varsa biraz büyü değerleri insan okunabilir isimleri ile ilişkili eğilimindedir. Django değeri yerine insanlar tarafından okunabilir adını bu alanları belirlemek için uygun bir yol var mı?

Bu modeli göz önünde bulundurun:

class Thing(models.Model):
  PRIORITIES = (
    (0, 'Low'),
    (1, 'Normal'),
    (2, 'High'),
  )

  priority = models.IntegerField(default=0, choices=PRIORITIES)

Bir noktada Şeyin bir örneği var ve önceliğini ayarlamak istiyoruz. Yapabileceğin açıkçası

thing.priority = 1

Ama öncelik Değeri-Adı eşleme ezberlemek için zorlar. Bu çalışmıyor:

thing.priority = 'Normal' # Throws ValueError on .save()

Şu anda bu saçma bir çözüm var:

thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']

ama bu iyi değil. Nasıl ortak bu senaryo olabilir verilirse herkes daha iyi bir çözüm vardı merak ettim. Ben tamamen göz ardı eden seçim alan adı ayarı için bazı alan yöntem var mı?

CEVAP
13 Temmuz 2009, PAZARTESİ


seen here yap. O zaman uygun bir tamsayı temsil eden bir kelime kullanabilirsiniz.

Bunun gibi

LOW = 0
NORMAL = 1
HIGH = 2
STATUS_CHOICES = (
    (LOW, 'Low'),
    (NORMAL, 'Normal'),
    (HIGH, 'High'),
)

O zaman hala DB tamsayılar.

Kullanım thing.priority = Thing.NORMAL olurdu

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006
  • wowchick16

    wowchick16

    17 Mart 2007