def QuestionForm(question):
    if  question.allow_multiple:
        choice_field = forms.ModelMultipleChoiceField(
                queryset=question.choices,
                widget=MyCheckboxSelectMultiple,
                required=not question.allow_no_choice
        )
    else:
        choice_field = forms.ModelChoiceField(
                queryset=question.choices,
                widget=MyRadioSelect,
                empty_label=None,
                required=not question.allow_no_choice
        )

    class _QuestionForm(forms.Form):
        """
        Question form with all its choices
        """
        choice = choice_field
        def choices(self):
            field = self['choice']
            # TODO: move choice percentage to question and use it here!!
            choice_list = fudge_choice_percentages(field.field.queryset)
            for choice, input in  zip(choice_list, field.as_widget(field.field.widget)):
                yield choice, input

    return _QuestionForm