当您有一个带有选项的模型字段时,您往往会有一些与人类可读名称相关联的神奇值。在 Django 中,是否有一种方便的方法来通过人类可读的名称而不是值来设置这些字段?
考虑一下这个模型:
class Thing(models.Model):
PRIORITIES = (
(0, 'Low'),
(1, 'Normal'),
(2, 'High'),
)
priority = models.IntegerField(default=0, choices=PRIORITIES)
在某些情况下,我们有一个 Thing 实例,我们想设置它的优先级,
thing.priority = 1
但这会迫使你记住优先级的价值-名称映射:
thing.priority = 'Normal' # Throws ValueError on .save()
目前我有一个愚蠢的解决办法:
thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']
但是那太笨重了。考虑到这种情况的普遍性,我想知道是否有人有更好的解决方案。是否有一些字段方法来设置字段的选择名称,我完全忽略了吗?