2017-01-10 193 views
0

到需要我使用Django部件的調整(我沒有使用這個庫,並開放給使用任何方法的工作)有以下單選按鈕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(), 
     } 

我得到的錯誤:

'SafeText' object has no attribute 'as_widget'

回答

1

如果我正確理解你的問題,你應該在表單中覆蓋這個,而不是在模板或模型。

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

+0

即使有這樣的解決方案,我怎麼可以添加輸入的「必需」屬性? – Atma

+0

只需在表單屬性中添加一個'required = True'即可。 (請參閱編輯) – karthikr

+0

這與需要的布爾HTML屬性不同:http://www.w3schools.com/tags/att_input_required.asp – Atma