我想重写UpdateView的get_form_kwargs()
方法,并具有类似以下内容:
class GroupRatingView(UpdateView):
model = Group
fields = ['rating']
def get_form_kwargs(self, *args, **kwargs):
kwargs = super(GroupRatingView, self).get_form_kwargs(*args, **kwargs)
import ipdb; ipdb.set_trace()
但是,如果我尝试这样做,我会得到以下错误:
File "/venv/lib/python2.7/site-packages/django/views/generic/edit.py" in post
181. form = self.get_form()
File "/venv/lib/python2.7/site-packages/django/views/generic/edit.py" in get_form
45. return form_class(**self.get_form_kwargs())
Exception Type: TypeError at /groups/5/rate
Exception Value: ModelFormMetaclass object argument after ** must be a mapping, not NoneType
看起来self.get_form_kwargs()
返回的是None
,而我期望的是直接进入调试器。为什么我得到一个错误,而不是命中调试器跟踪?
发布于 2019-07-09 02:57:16
您忘记在方法的末尾返回kwargs
;这会导致方法返回None
,而这不是一个映射,这会导致错误。
向您的方法添加一条return
语句:
class GroupRatingView(UpdateView):
...
def get_form_kwargs(self, *args, **kwargs):
kwargs = super(GroupRatingView, self).get_form_kwargs(*args, **kwargs)
...
return kwargs
https://stackoverflow.com/questions/56940998
复制相似问题