小编典典

如何使用RadioSelect呈现Django表单,而默认情况下不显示选中的单选按钮?

python

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

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

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

<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>

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

myChoices = (
    ("1", "First choice"),("2", "Second choice"),("3", "Third choice"),
)    

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

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

<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>

但是,如何在没有选中输入属性的情况下呈现表单?
(并且没有自动生成的)


阅读 223

收藏
2021-01-20

共1个答案

小编典典

这是一种很棘手的解决方案,但我已经对其进行了测试:将字段的默认值设置为不是选择之一的值(我建议将其设置为None)。呈现表单时,Django将不知道将哪个输入标记为已选中,因此它将所有输入都保持为未选中状态(不会引发错误)。而且,存在默认值的事实意味着将没有自动生成的输入字段。

2021-01-20