2017-01-10 2 views
0

У меня есть следующие радио кнопки HTML с использованием Джанго виджета твиков (я не должен использовать эту библиотеку и открыта для использования каких бы метода работы):не может установить переключатель в положении требуется Джанго

{% 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,) 

Моя форма выглядит Li Ke:

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

Это отличается от атрибута boolean HTML: http://www.w3schools.com/tags/att_input_required.asp – Atma