自动为Django模型中的每个选项添加常量

gui*_*ism 5 python django django-models

我一直在Django中做以下模式:

class MyModel(models.Model):

    FOO = 1
    BAR = 2
    GOO = 3

    BLAH_TYPES = (
        (FOO, 'Foodally boogaly'),
        (BAR, 'Bar bar bar bar'),
        (GOO, 'Goo goo gaa gaa'),
    )

    TYPE_FOR_ID = dict(BLAH_TYPES)

    ID_FOR_TYPE = dict(zip(TYPE_FOR_ID.values(), TYPE_FOR_ID.keys()))

    blah = models.IntegerField(choices=BLAH_TYPES)
Run Code Online (Sandbox Code Playgroud)

有没有一个好的模式,其他人遵循,实现相同的效果(即我可以访问具有双向名称和词典的常量)没有那么多代码?

Dan*_*man 5

Carl Meyer的django-model-utils库有一个很好的解决方案 - Choices类,它允许您通过人类可读的属性声明一个选项列表.