0

私はdjangoが初めてです。form.pyにこのようなものが必要です:

class SearchForm(forms.Form):
    CHOICES1 = (('a','a'),
               ('b','b'),)
    field1 = forms.ChoiceField(choices=CHOICES1)
#if field1=='a':
    CHOICES2 = (('c','c'),
               ('d','d'),)
    field2 = forms.ChoiceField(choices=CHOICES2) 
#if field1=='b':
    CHOICES2 = (('e','e'),
               ('f','f'),)
    field2 = forms.ChoiceField(choices=CHOICES2)

しかし、私はこれをどのように行うべきかわかりません。

4

1 に答える 1

1

これを行う簡単な方法はありません。サーバー上でJavascriptとカスタム検証が必要になります。

jQueryを使用すると、クライアントコードは次のようになります。

var F2_CHOICES = {
    'a' : { 'c' : 'c', 'd' : 'd'},
    'b' : { 'e' : 'e', 'f' : 'f'}
};
var $field2 = $('[name=field2]');
  $('[name=field1]').change(
  function() {
      var currentValue = $(this).val() ;
      $field2.empty();
      for (o in F2_CHOICES[currentValue]){
            $field2.append('<option '+' value="'+o+'">'+F2_CHOICES[currentValue][o]+'</option>');
      }
  });

cleanサーバーでは、field2の値がfield1の値に対応する選択肢の1つであるかどうかを確認するために、フォームでメソッドを定義する必要があります。

于 2012-12-16T16:56:43.077 に答える