不能在django中设置单选按钮

时间:2017-01-10 00:45:23

标签: python html css django django-forms

我有以下单选按钮html使用django小部件调整(我不必使用此库并打开使用任何方法工作):

{% for choice in seeking_form2.disaster_recovery %}
                          <div class="radio radio-primary radio-inline">
                           {{ choice.tag|attr:"required" }}
                            <label for='{{ seeking_form2.disaster_recovery.auto_id }}_{{ forloop.counter0 }}'>{{ choice.choice_label }}</label>
                          </div>
                          {% endfor %}

哪个应创建如下所示的无线电:

<input id="id_disaster_recovery" name="disaster_recovery" type="radio" value="2" required>

我的模型看起来像:

BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))
disaster_recovery = models.BooleanField(choices=BOOL_CHOICES, default=False, )

我的表单如下:

class MyForm(forms.ModelForm):

    class Meta:
        model = MyModel
        widgets = {
            'disaster_recovery': forms.RadioSelect(), 
        }

我收到错误:

  

&#39; SafeText&#39;对象没有属性&#39; as_widget&#39;

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您应该在表单中覆盖它,而不是在模板或模型中。

class MyModelForm(..):
    disaster_recovery = forms.ChoiceField(choices=BOOL_CHOICES, widget=forms.RadioSelect(), required=True) #Default is dropdown

现在,您可以简化HTML以呈现无线电按钮。

Some more context on this can be found here

要将HTML必需属性添加到现有表单,您可以执行以下操作:

class MyForm(forms.ModelForm):

    class Meta:
        model = MyModel
        widgets = {
            'disaster_recovery': forms.RadioSelect(attrs={"required": "required"}), 
        }

以下是相关的documentation on the custom attributes