I am converting a survey from a Form
to a ModelForm
in Django 1.6.2.
Can anyone tell me what is the equal of forms.ChoiceField(widget=forms.Select(),
and forms.ChoiceField(widget=forms.RadioSelect()
using ModelForm
?
I have tried widget=models.Select()
or widget=models.RadioSelect()
but it keeps giving the error
AttributeError: 'module' object has no attribute 'Select'
AttributeError: 'module' object has no attribute 'RadioSelect'
Old Code
forms.py
class SurveyFormB(forms.Form):
#Do you own a Smartphone?
YES_SMARTPHONE = 'Yes'
NO_SMARTPHONE = 'No'
SMART_PHONE_OWNERSHIP = (
(YES_SMARTPHONE, 'Yes'),
(NO_SMARTPHONE, 'No'),
)
smart_phone_ownership = forms.ChoiceField(widget=forms.RadioSelect(), choices=SMART_PHONE_OWNERSHIP, initial= "", label='Do you own a Smartphone?', required = False)
#If 'Yes' How many hours a day do you access the Internet on it?
SMART_PHONE_LESS_THAN_ONE_HOUR_A_DAY = 'Less than one hour day'
SMART_PHONE_ONE_TO_TWO_HOURS_A_DAY = '1 - 2 Hours a day'
SMART_PHONE_TWO_TO_FOUR_HOURS_A_DAY = '2 - 4 hours a day'
SMART_PHONE_FOUR_TO_SIX_HOURS_A_DAY = '4 - 6 hours a day'
SMART_PHONE_SIX_TO_EIGHT_HOURS_A_DAY = '6 - 8 hours a day'
SMART_PHONE_EIGHT_PLUS_HOURS_A_DAY = '8 + hours a day'
SMART_PHONE_USAGE = (
("", "----------"),
(SMART_PHONE_LESS_THAN_ONE_HOUR_A_DAY, 'Less than one hour a day'),
(SMART_PHONE_ONE_TO_TWO_HOURS_A_DAY, '1 - 2 Hours a day'),
(SMART_PHONE_TWO_TO_FOUR_HOURS_A_DAY, '2 - 4 hours a day'),
(SMART_PHONE_FOUR_TO_SIX_HOURS_A_DAY, '4 - 6 hours a Day'),
(SMART_PHONE_SIX_TO_EIGHT_HOURS_A_DAY, '6 - 8 hours a day'),
(SMART_PHONE_EIGHT_PLUS_HOURS_A_DAY, '8 + hours a day'),
)
smart_phone_usage = forms.ChoiceField(widget=forms.Select(), choices=SMART_PHONE_USAGE, initial= "", label='If Yes, How many hours a day do you access the Internet on it?', required = False)
New Code (not working)
modules.py
#Do you own a Smartphone?
YES_SMARTPHONE = 'Yes'
NO_SMARTPHONE = 'No'
SMART_PHONE_OWNERSHIP = (
(YES_SMARTPHONE, 'Yes'),
(NO_SMARTPHONE, 'No'),
)
smart_phone_ownership = models.CharField(null=True, max_length=1, widget=models.RadioSelect(), choices=SMART_PHONE_OWNERSHIP, verbose_name='Do you own a Smartphone?')
#If 'Yes' How many hours a day do you access the Internet on it?
SMART_PHONE_LESS_THAN_ONE_HOUR_A_DAY = 'Less than one hour day'
SMART_PHONE_ONE_TO_TWO_HOURS_A_DAY = '1 - 2 Hours a day'
SMART_PHONE_TWO_TO_FOUR_HOURS_A_DAY = '2 - 4 hours a day'
SMART_PHONE_FOUR_TO_SIX_HOURS_A_DAY = '4 - 6 hours a day'
SMART_PHONE_SIX_TO_EIGHT_HOURS_A_DAY = '6 - 8 hours a day'
SMART_PHONE_EIGHT_PLUS_HOURS_A_DAY = '8 + hours a day'
SMART_PHONE_USAGE = (
(SMART_PHONE_LESS_THAN_ONE_HOUR_A_DAY, 'Less than one hour a day'),
(SMART_PHONE_ONE_TO_TWO_HOURS_A_DAY, '1 - 2 Hours a day'),
(SMART_PHONE_TWO_TO_FOUR_HOURS_A_DAY, '2 - 4 hours a day'),
(SMART_PHONE_FOUR_TO_SIX_HOURS_A_DAY, '4 - 6 hours a Day'),
(SMART_PHONE_SIX_TO_EIGHT_HOURS_A_DAY, '6 - 8 hours a day'),
(SMART_PHONE_EIGHT_PLUS_HOURS_A_DAY, '8 + hours a day'),
)
smart_phone_usage = models.CharField(null=True, blank=True, max_length=1, widget=models.Select(), choices=SMART_PHONE_USAGE, verbose_name='If Yes, How many hours a day do you access the Internet on it?')
I have also tried overwriting it in the forms.py
as was necessary for SelectDateWidget
but did not get it
Any help is as always much appreciated
Thanks