覆盖get_form后发出警告

时间:2016-02-16 10:56:40

标签: django django-forms django-views

在我的基于类的更新/创建视图中,我添加了一些类:

class IndexUpdateView(UpdateView):
    fields = '__all__'
    model = Index
    template_name = 'index_form.html'

    def get_success_url(self):
        return reverse('IndexList')

    def get_form(self, form_class):
        form = super(IndexUpdateView, self).get_form(form_class)
        form.fields['year'].widget.attrs.update({"class": "form-control tosp"})
        form.fields['index'].widget.attrs.update({"class": "form-control tosp"})
        return form

添加" get_form"我收到了警告:

  

RemovedInDjango110Warning:Index.views.IndexCreateView.get_form方法必须为其form_class参数定义默认值。

如何定义默认值?

2 个答案:

答案 0 :(得分:10)

自Django 1.8(release notes)以来,A=accumarray(J,M); Mode(1:size(A))=A; 参数是可选的。警告告诉您必须为form_class指定默认参数,例如

form_class

如果您查看default implementation,则会使用def get_form(self, form_class=MyFormClass): ... 作为默认设置,并在未指定时调用None。由于您已经在self.get_form_class()方法中调用了super(),因此您也应该可以使用get_form作为默认值。

None

在您的特定情况下,您可以定义一个模型表单,用于更改def get_form(self, form_class=None): form = super(IndexUpdateView, self).get_form(form_class) ... 方法中的小部件attrs。然后,您根本不必覆盖__init__

get_form

答案 1 :(得分:1)

将属性form_class添加到您的班级。

class IndexCreateView(UpdateView):
    form_class = MyFormClass