from django.utils.datastructures import SortedDict class Choices(SortedDict): def __init__(self, *choices): super(Choices, self).__init__() for choice in choices: self[choice[0]] = choice[1] @property def choices(self): choices = [] for key, value in self.items(): choices.append( (key, value,) ) return tuple(choices) def __iter__(self): return self.choices.__iter__() # Choices implementation class MyForm(forms.Form): CHOICE1 = 0 CHOICE2 = 1 CHOICE3 = 2 CHOICES = Choices( (CHOICE1, 'Choice 1'), (CHOICE2, 'Choice 2'), (CHOICE3, 'Choice 3'), ) field = forms.ChoiceField( choices=CHOICES, )