Как создать форму Django с помощью взаимоисключающих радиокнопок? - PullRequest
2 голосов
/ 12 мая 2011

Мне нужна форма с двумя (взаимоисключающими) радиокнопками и с некоторыми другими элементами управления между ними.Я имею в виду, что мне нужна форма, подобная этой: enter image description here

Здесь Я нашел способ создать логическое поле с двумя взаимоисключающими переключателями, но я не знаю, как вставить другие элементы управлениямежду ними.

1 Ответ

0 голосов
/ 28 мая 2012

Я предлагаю вам разделить это на две (или более) отдельные формы Django с некоторыми JS на стороне клиента, чтобы сделать включение / отключение каждого набора полей при нажатии переключателей (которые сами по себе не являются частью какой-либо формы Django).).

например

class FormA(forms.Form):
    some_field = forms.CharField()
    other_field = forms.CharField()

class FormB(forms.Form):
    third_field = forms.CharField()
    one_more_field = forms.CharField()

на ваш взгляд:

def my_view(request):
    form_a = None
    form_b = None

    if request.POST:
        if request.POST['choice_field'] == 'a':
            form_a = FormA(prefix='a', data=request.POST)
            if form_a.is_valid():
                # do something
        if request.POST['choice_field'] == 'b':
            form_b = FormB(prefix='b', data=request.POST)
            if form_b.is_valid():
                # do something

    form_a = form_a or FormA(prefix='a')
    form_b = form_b or FormA(prefix='b')

    context = {
        'form_a': form_a,
        'form_b': form_b,
    }
    return render_to_response("my_form.html", context, RequestContext(request))

в вашем шаблоне:

<form action="" method="post">
  <input type="radio" name="choice_field" value="a" />
  <ul>
      {{ form_a.as_ul }}
  </ul>
  <input type="radio" name="choice_field" value="b" />
  <ul>
      {{ form_b.as_ul }}
  </ul>
  <input type="submit" value="Submit" />
</form>
...