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

  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • hitcreatormusic2

    hitcreatormu

    21 Mayıs 2010
  • lilstevie89

    lilstevie89

    25 Mart 2011