首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在默认情况下不选中单选按钮的情况下使用RadioSelect呈现Django表单?

如何在默认情况下不选中单选按钮的情况下使用RadioSelect呈现Django表单?
EN

Stack Overflow用户
提问于 2010-07-15 01:41:26
回答 3查看 8.7K关注 0票数 17

在Django 1.2.1上,我使用了ModelForm并生成了一个带有单选按钮的表单:

代码语言:javascript
代码运行次数:0
运行
复制
class myModelForm(ModelForm):    
    class Meta:
        model = myModel
        widgets = {
            'choose': RadioSelect(),
        } 

这会生成一个带有伪值的额外输入:

代码语言:javascript
代码运行次数:0
运行
复制
<li><input type="radio" id="id_choose_0" value="" name="choose1" /> ---------</li>
<li><input type="radio" id="id_choose_1" value="1" name="choose1" /> First choice</li>

我知道我可以通过设置一个默认值来摆脱自动生成的空输入字段:

代码语言:javascript
代码运行次数:0
运行
复制
myChoices = (
    ("1", "First choice"),("2", "Second choice"),("3", "Third choice"),
)    

class myModel(models.Model):
    choose = models.CharField(max_length=1, choices=myChoices, default=1...

因此,在这种情况下,将选择第一个选项:

代码语言:javascript
代码运行次数:0
运行
复制
<li><input checked="checked" type="radio" id="id_choose_1" value="1" name="choose1" /> First choice</li>
<li><input type="radio" id="id_choose_2" value="2" name="choose2" /> Second choice</li>

但是如果没有选中的输入属性,我该如何呈现表单呢?

(并且没有自动生成的文件)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-17 22:50:26

这是一种老生常谈的解决方案,但我已经对其进行了测试:只需将字段的默认值设置为一个不在选项之列的值(我建议将其设置为None)。在呈现表单时,Django不知道将哪个输入标记为选中,因此它将保留所有输入都未选中(不会抛出错误)。有默认值的事实意味着将不会有自动生成的输入域。

票数 17
EN

Stack Overflow用户

发布于 2014-01-31 16:55:08

在Django1.6(没有在其他版本中测试)中,你需要的只是default=None

代码语言:javascript
代码运行次数:0
运行
复制
class myModel(models.Model):
    choose = models.CharField(..., default=None)

class myModelForm(ModelForm):
    class Meta:
        model = myModel
        widgets = {
            'choose': RadioSelect(),
        }
票数 11
EN

Stack Overflow用户

发布于 2012-06-28 17:16:04

以前的解决方案对我不起作用。

因此,我只需要切出第一个小部件的选择。

代码语言:javascript
代码运行次数:0
运行
复制
class myModelForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(ContactForm, self).__init__(*args, **kwargs)
        self.fields['choose'].choices = self.fields['choose'].choices[1:]

    class Meta:
        model = myModel
        widgets = {
            'choose': RadioSelect(),
        } 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3248887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档