如何在ModelForm中指定Select和RadioSelect? [英] How to specify Select and RadioSelect in a ModelForm?

查看:169
本文介绍了如何在ModelForm中指定Select和RadioSelect?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将调查从 Form 转换为Django 1.6.2中的 ModelForm

I am converting a survey from a Form to a ModelForm in Django 1.6.2.

任何人都可以告诉我什么是相等的 forms.ChoiceField(widget = forms.Select(), forms.ChoiceField(widget = forms.RadioSelect()使用 ModelForm

Can anyone tell me what is the equal of forms.ChoiceField(widget=forms.Select(), and forms.ChoiceField(widget=forms.RadioSelect() using ModelForm?

我尝试过 widget = models.Select() widget = models.RadioSelect()错误


AttributeError:'module'对象没有属性'Select'

AttributeError: 'module' object has no attribute 'Select'

AttributeError:'module'对象没有属性'RadioSelect'

AttributeError: 'module' object has no attribute 'RadioSelect'



旧代码



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)



新代码(不工作)



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?')

我也试过在 forms.py SelectDateWidget 所必需的,但没有得到它

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

谢谢

推荐答案

Django模型不提供RadioSelect或Select widget。您需要在模型表单中添加。

Django model doesn’t provide RadioSelect or Select widget. You need to add this in Model form.

class SmartPhoneForm(forms.ModelForm):
    class Meta:
        model = Phone
        fields = ['smart_phone_ownership', 'smart_phone_usage']
        widgets = {
            'smart_phone_ownership': forms.RadioSelect,
            'smart_phone_usage': forms.Select,
        }



models.py



models.py

class SmartPhone(models.Model):
    # 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,
        default=None, 
        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,
        choices=SMART_PHONE_USAGE,
        # default=None,
        verbose_name='If Yes, How many hours a day do you access the Internet on it?'
        )

这篇关于如何在ModelForm中指定Select和RadioSelect?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆