gpt4 book ai didi

django - 覆盖 get_form 后的警告

转载 作者:行者123 更新时间:2023-12-04 17:08:16 27 4
gpt4 key购买 nike

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

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 method must define a default value for its form_class argument.



如何定义默认值?

最佳答案

form_class自 Django 1.8 ( release notes ) 以来,参数一直是可选的。警告告诉您必须为 form_class 指定默认参数,例如

def get_form(self, form_class=MyFormClass):
...

如果你看 default implementation ,它使用 None作为默认值,并调用 self.get_form_class()当它没有被指定时。由于您已经在 get_form 中调用了 super()方法,你应该可以使用 None也作为默认值。
def get_form(self, form_class=None):
form = super(IndexUpdateView, self).get_form(form_class)
...

在您的特定情况下,您可以定义一个模型表单来更改 __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')

关于django - 覆盖 get_form 后的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35430637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com