我有以下单选按钮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;
答案 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"}),
}