当使用__init__创建字段时,Django-form不受限制

时间:2017-04-16 16:12:33

标签: python django forms django-forms django-views

我使用 init 方法在表单中创建ChoiceField,以便调用另一个填充字段选项的函数。现在,当用户选择下拉列表并提交表单时,我无法使用请求成功创建表单,而我认为“bound = False”使表单无效。有没有办法使用 init 方法创建表单字段,同时在 request.POST 中传递表单时有效?提前致谢。

Forms.py

<ul>
  <li><img /></li> <!--first image-->
  <li><img /></li>
  <li><img /></li>
</ul>

<ul>
  <li><img /></li> <!--first image-->
  <li><img /></li>
  <li><img /></li>
</ul>

<ul>
  <li><img /></li> <!--first image-->
  <li><img /></li>
  <li><img /></li>
</ul>

<ul>
  <li><img /></li> <!--first image-->
  <li><img /></li>
  <li><img /></li>
</ul>

...

View.py:处理已提交表单

的方法
class CoursesForm(forms.Form):

    def __init__(self, subject, *args, **kwargs):
        super(CoursesForm, self).__init__(*args, **kwargs)
        self.fields['course'] = forms.ChoiceField(choices=get_uw_courses_from_subject(subject), required=False)

1 个答案:

答案 0 :(得分:0)

因为您已覆盖方法签名,因此第一个位置参数为@ EqV¡^MSÁ9,而不是subject不要那样做

data

另外,不要忘记实际传递主题论点:

def __init__(self, *args, **kwargs):
    subject = kwargs.pop('subject', None)
    ...