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

  • pilslajt

    pilslajt

    20 HAZİRAN 2008
  • SDSARG3

    SDSARG3

    14 Mart 2009
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008