Login

Choices class

Author:
dc
Posted:
November 10, 2008
Language:
Python
Version:
1.0
Score:
7 (after 7 ratings)

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

  1. Template tag - list punctuation for a list of items by shapiromatron 11 months, 2 weeks ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months, 3 weeks ago
  3. Serializer factory with Django Rest Framework by julio 1 year, 6 months ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 7 months ago
  5. Help text hyperlinks by sa2812 1 year, 8 months ago

Comments

petar (on November 11, 2008):

This class if freaking awesome!

#

Please login first before commenting.