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

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • CNET

    CNET

    5 Mayıs 2006
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010