两个表单域之间的关系

时间:2012-12-16 14:41:32

标签: django django-forms

我是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)

但我不知道该怎么做。

1 个答案:

答案 0 :(得分: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值对应的选项之一。