'Use a list to generate choices in a ChoiceField.
.. py:param choice_list: The list to use to generate choices or a
function that returns a list.'

def __init__(self, choice_list=None, required=True, widget=None, label=None, initial=None, help_text='', *args, **kwargs):

    choice_list = (choice_list or [])
    if callable(choice_list):
        choices = (lambda : [(choice, choice) for choice in choice_list()])
    else:
        choices = [(choice, choice) for choice in choice_list]
    super(Select2ListChoiceField, self).__init__(choices=choices, required=required, widget=widget, label=label, initial=initial, help_text=help_text, *args, **kwargs)
