spi*_*amy 5 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
Run Code Online (Sandbox Code Playgroud)
添加"get_form"后,我收到了警告:
RemovedInDjango110Warning:
Index.views.IndexCreateView.get_form方法必须为其form_class参数定义默认值.
如何定义默认值?
Ala*_*air 10
form_class自Django 1.8(发行说明)以来,该参数是可选的.警告告诉您必须为form_class指定默认参数,例如
def get_form(self, form_class=MyFormClass):
...
Run Code Online (Sandbox Code Playgroud)
如果查看默认实现,它将None用作默认实现,并self.get_form_class()在未指定时调用.由于您已经在get_form方法中调用了super(),因此您也应该可以使用None默认值.
def get_form(self, form_class=None):
form = super(IndexUpdateView, self).get_form(form_class)
...
Run Code Online (Sandbox Code Playgroud)
在特定情况下,您可以定义一个模型表单来更改方法中的小部件attrs __init__.然后你根本不必覆盖get_form.
class IndexForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(IndexForm, self).__init__(*args, **kwargs)
self.fields['year'].widget.attrs.update({"class": "form-control tosp"})
self.fields['index'].widget.attrs.update({"class": "form-control tosp"})
class IndexUpdateView(UpdateView):
fields = '__all__'
model = Index
form_class = IndexForm
template_name = 'index_form.html'
def get_success_url(self):
return reverse('IndexList')
Run Code Online (Sandbox Code Playgroud)
将属性添加form_class到您的类中。
class IndexCreateView(UpdateView):
form_class = MyFormClass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
926 次 |
| 最近记录: |