Yet another class to simplify field choices creation. Keeps order, allows i18n.
Before:
ONLINE = 0
OFFLINE = 1
STATES = (
    (ONLINE, _('online')),
    (OFFLINE, _('offline'))
)
state = models.IntegerField(choices=STATES, default=OFFLINE)
After:
STATES = Choices(
    ('ONLINE', _('online')),
    ('OFFLINE', _('offline'))
)
state = models.IntegerField(choices=STATES, default=STATES.OFFLINE)
1 2 3 4 5 6 7 8 9  | class Choices(object):
    def __init__(self, *args):
        self._choices = []
        for i, arg in enumerate(args):
            setattr(self, arg[0], i)
            self._choices.append((i, arg[1]))
    def __iter__(self):
        return iter(self._choices)
 | 
More like this
- Add Toggle Switch Widget to Django Forms by OgliariNatan 1 month, 4 weeks ago
 - get_object_or_none by azwdevops 5 months, 2 weeks ago
 - Mask sensitive data from logger by agusmakmun 7 months, 2 weeks ago
 - Template tag - list punctuation for a list of items by shapiromatron 1 year, 9 months ago
 - JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 1 year, 9 months ago
 
Comments
This class if freaking awesome!
#
Please login first before commenting.