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 值的选项之一。

于 2012-12-16T16:56:43.077 回答