เมื่อคุณมีฟิลด์โมเดลที่มีตัวเลือกตัวเลือกคุณมักจะมีค่าเวทย์มนตร์ที่เกี่ยวข้องกับชื่อที่มนุษย์อ่านได้ ใน Django มีวิธีที่สะดวกในการตั้งค่าฟิลด์เหล่านี้ด้วยชื่อที่มนุษย์อ่านได้แทนค่าหรือไม่?
พิจารณารุ่นนี้:
class Thing(models.Model):
PRIORITIES = (
(0, 'Low'),
(1, 'Normal'),
(2, 'High'),
)
priority = models.IntegerField(default=0, choices=PRIORITIES)
ในบางครั้งเรามีอินสแตนซ์ Thing และเราต้องการกำหนดลำดับความสำคัญ เห็นได้ชัดว่าคุณทำได้
thing.priority = 1
แต่นั่นบังคับให้คุณจำการแมป Value-Name ของ PRIORITIES สิ่งนี้ใช้ไม่ได้:
thing.priority = 'Normal' # Throws ValueError on .save()
ขณะนี้ฉันมีวิธีแก้ปัญหาโง่ ๆ นี้:
thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']
แต่มันเป็นเรื่องที่น่าเบื่อ เนื่องจากสถานการณ์นี้เป็นเรื่องธรรมดาที่ฉันสงสัยว่าใครมีวิธีแก้ปัญหาที่ดีกว่านี้ มีวิธีฟิลด์บางวิธีในการตั้งค่าฟิลด์ตามชื่อตัวเลือกที่ฉันมองข้ามไปทั้งหมดหรือไม่?