This is my forms.py for a small survey application I am developing. I previously posted some of my models.py.
I am completely self-taught and am just looking for advice on how to improve. Any advice, even things you might think should be obvious, would be much appreciated.
from django import forms
from django.forms import ModelForm, Textarea, extras, RadioSelect, IntegerField
from django.forms.extras import SelectDateWidget
from django.forms.extras import *
from survey.models import Person
from django.core import validators
import random
from django.forms.util import ErrorList
from itertools import chain
from django.utils.encoding import force_unicode
# Used to make RadioSelect non manditory and remove default option in the ModelForm
# (http://stackoverflow.com/questions/30218930/how-to-make-a-radioselect-non-manditory-and-remove-default-option-in-a-modelform)
class RadioSelectNotNull(RadioSelect):
def get_renderer(self, name, value, attrs=None, choices=()):
"""Returns an instance of the renderer."""
if value is None: value = ''
str_value = force_unicode(value) # Normalize to string.
final_attrs = self.build_attrs(attrs)
choices = list(chain(self.choices, choices))
if choices[0][0] == '':
choices.pop(0)
return self.renderer(name, str_value, final_attrs, choices)
class SurveyFormIT1(forms.ModelForm):
class Meta:
model = Person
fields = ['instruction_task_one_value']
widgets = {'instruction_task_one_value' : forms.HiddenInput}
class SurveyFormIT2(forms.ModelForm):
class Meta:
model = Person
fields = ['instruction_task_two_value']
widgets = {'instruction_task_two_value' : forms.HiddenInput}
class Start(forms.ModelForm):
class Meta:
model = Person
fields = ['start']
widgets = {'start' : forms.HiddenInput}
class SurveyFormA(forms.ModelForm):
birthdate = forms.DateField(widget=extras.SelectDateWidget(), required=False)
class Meta:
model = Person
fields = ['sender', 'birthdate', 'sex', 'marital_status', 'state']
class SurveyFormB(forms.ModelForm):
class Meta:
model = Person
fields = ['internet_usage', 'smart_phone_ownership', 'smart_phone_usage']
widgets = {'internet_usage' : RadioSelectNotNull,
'smart_phone_ownership' : RadioSelectNotNull,
'smart_phone_usage' : RadioSelectNotNull,}
class SurveyFormC(forms.ModelForm):
class Meta:
model = Person
fields = ['education', 'wages', 'presentage_savings', 'occupation', 'living']
widgets = {'education' : RadioSelect(),
'wages' : RadioSelect(),
'presentage_savings' : RadioSelect(),
'occupation' : RadioSelect(),
'living' : RadioSelect(),}
class SurveyFormD(forms.ModelForm): # Political Viewpoints
class Meta:
model = Person
fields = ['political_leaning', 'democrat_republican', 'voting_rights', 'election']
widgets = {'political_leaning' : RadioSelect(),
'democrat_republican' : RadioSelect(),
'voting_rights' : RadioSelect(),
'election' : forms.CheckboxSelectMultiple,}
class SurveyFormE(forms.ModelForm): #News Access Questions
class Meta:
model = Person
fields = ['news_access', 'station_access', 'newspaper_access']
widgets = {'news_access' : forms.CheckboxSelectMultiple,
'station_access' : forms.CheckboxSelectMultiple,
'newspaper_access' : forms.CheckboxSelectMultiple,}
class SurveyFormSpike1(forms.ModelForm):
class Meta:
model = Person
fields = ['spike_one_value']
widgets = {'spike_one_value' : forms.HiddenInput}
class SurveyFormF1(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_one_value']
widgets = {'slider_one_value' : forms.HiddenInput}
class SurveyFormF2(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_two_value']
widgets = {'slider_two_value' : forms.HiddenInput}
class SurveyFormF3(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_three_value']
widgets = {'slider_three_value' : forms.HiddenInput}
class SurveyFormDV1(forms.ModelForm):
class Meta:
model = Person
fields = ['DV_one_value', 'DV_two_value', 'DV_three_value']
widgets = {'DV_one_value' : forms.HiddenInput,
'DV_two_value' : forms.HiddenInput,
'DV_three_value' : forms.HiddenInput}
class SurveyFormF4(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_four_value']
widgets = {'slider_four_value' : forms.HiddenInput}
class SurveyFormF5(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_five_value']
widgets = {'slider_five_value' : forms.HiddenInput}
class SurveyFormF6(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_six_value']
widgets = {'slider_six_value' : forms.HiddenInput}
class SurveyFormDV2(forms.ModelForm):
class Meta:
model = Person
fields = ['DV_four_value', 'DV_five_value', 'DV_six_value']
widgets = {'DV_four_value' : forms.HiddenInput,
'DV_five_value' : forms.HiddenInput,
'DV_six_value' : forms.HiddenInput}
class SurveyFormSpike2(forms.ModelForm):
class Meta:
model = Person
fields = ['spike_two_value']
widgets = {'spike_two_value' : forms.HiddenInput}
class SurveyFormF7(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_seven_value']
widgets = {'slider_seven_value' : forms.HiddenInput}
class SurveyFormF8(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_eight_value']
widgets = {'slider_eight_value' : forms.HiddenInput}
class SurveyFormF9(forms.ModelForm):
class Meta:
model = Person
fields = ['slider_nine_value']
widgets = {'slider_nine_value' : forms.HiddenInput}
class SurveyFormDV3(forms.ModelForm):
class Meta:
model = Person
fields = ['DV_seven_value', 'DV_eight_value', 'DV_nine_value']
widgets = {'DV_seven_value' : forms.HiddenInput,
'DV_eight_value' : forms.HiddenInput,
'DV_nine_value' : forms.HiddenInput}
class SurveyFormDV4(forms.ModelForm):
class Meta:
model = Person
fields = ['DV_positive']
widgets = {'DV_positive' : forms.HiddenInput}
class SurveyFormDV5(forms.ModelForm):
class Meta:
model = Person
fields = ['DV_negative']
widgets = {'DV_negative' : forms.HiddenInput}
class SurveyFormG(forms.ModelForm): #Reflective Questions
class Meta:
model = Person
fields = ['medium', 'gender', 'political', 'racial', 'climate_change', 'health_care', 'religious', 'party_benefit', 'party_benefit_message']
widgets = {'medium' : RadioSelect(),
'gender' : RadioSelect(),
'political' : RadioSelect(),
'racial' : RadioSelect(),
'climate_change' : RadioSelect(),
'health_care' : RadioSelect(),
'religious' : RadioSelect(),
'party_benefit' : RadioSelect(),
'party_benefit_message' : forms.Textarea}
class SurveyFormH(forms.ModelForm): #Reflective Questions
class Meta:
model = Person
fields = ['topics', 'topics_message', 'website_aspects', 'deliberate', 'deliberate_message']
widgets = {'topics' : forms.CheckboxSelectMultiple,
'topics_message' : forms.Textarea,
'website_aspects' : forms.CheckboxSelectMultiple,
'deliberate' : RadioSelect(),
'deliberate_message' : forms.Textarea}
class SurveyFormI(forms.ModelForm):
class Meta:
model = Person
fields = ['medium', 'branding', 'agenda', 'share_buttons', 'agreement_share_buttons', 'elements_features', 'elements_features_message', 'limit_elements_features', 'limit_elements_features_message']
widgets = {'medium' : RadioSelect(),
'branding' : RadioSelect(),
'agenda' : RadioSelect(),
'share_buttons' : RadioSelect(),
'agreement_share_buttons' : RadioSelect(),
'elements_features' : RadioSelect(),
'elements_features_message' : forms.Textarea,
'limit_elements_features' : RadioSelect(),
'limit_elements_features_message' : forms.Textarea,}
class SurveyFormJ(forms.ModelForm):
class Meta:
model = Person
fields = ['bias_action', 'bias_action_message', 'bias_stop_reading']
widgets = {'bias_action' : RadioSelect(),
'bias_action_message' : forms.Textarea,
'bias_stop_reading' : RadioSelect(),}