我已经遇到了这个错误并且不让我在表单中保存信息。初始数据在表格中表现良好,但节约对我构成挑战。希望有人可以提供帮助,我真的被困了
class UserPostCreatView(CreateView):
form_class = PostModelForm
template_name = 'posts/post_form.html'
success_url = "/profile/{user_slug}/wall"
def get_initial(self):
# Get the initial dictionary from the superclass method
initial = super(UserPostCreatView, self).get_initial()
user_slug = self.kwargs.get('user_slug')
user_content_type = ContentType.objects.get_for_model(authomodel.User)
auth_user = get_object_or_404(authomodel.User, user_slug=user_slug)
auth_user_id = auth_user.id
# Copy the dictionary so we don't accidentally change a mutable dict
initial = initial.copy()
initial = {
"content_type": user_content_type,
"object_id" : auth_user_id,
}
return initial
def form_valid(self, form):
return HttpResponseRedirect(self.get_success_url())
def get_form_kwargs(self):
"""
Returns the keyword arguments for instantiating the form.
"""
kwargs = {
'initial': self.get_initial(),
}
if self.request.method in ('POST', 'PUT'):
kwargs.update({
'data': self.request.POST or None,
'files': self.request.FILES or None})
return kwargs
def get_form_class(self):
return self.form_class
回溯:
文件“C:\ Program Files \ Python35 \ lib \ site-packages \ django \ core \ handlers \ exception.py“in 内 41. response = get_response(request)
文件“C:\ Program 文件\ Python35 \ lib \ site-packages \ django \ core \ handlers \ base.py“in _legacy_get_response 249. response = self._get_response(request)
文件“C:\ Program 文件\ Python35 \ lib \ site-packages \ django \ core \ handlers \ base.py“in _get_response 187. response = self.process_exception_by_middleware(e,request)
文件“C:\ Program 文件\ Python35 \ lib \ site-packages \ django \ core \ handlers \ base.py“in _get_response 185. response = wrapped_callback(request,* callback_args,** callback_kwargs)
文件“C:\ Program 文件\ Python35 \ lib \ site-packages \ django \ views \ generic \ base.py“在视图中 68.返回self.dispatch(request,* args,** kwargs)
文件“C:\ Program Files \ Python35 \ lib \ site-packages \ django \ views \ generic \ base.py“in 调度 88.返回处理程序(request,* args,** kwargs)
文件“C:\ Program 邮件中的Files \ Python35 \ lib \ site-packages \ django \ views \ generic \ edit.py“ 217. return super(BaseCreateView,self).post(request,* args,** kwargs)
文件“C:\ Program 邮件中的Files \ Python35 \ lib \ site-packages \ django \ views \ generic \ edit.py“ 183.返回self.form_valid(form)
文件 “C:\用户\瓦哈卜\桌面\ site1的\奥斯特拉\ ostrakodecommerce \ \职位views.py” 在form_valid 207.返回HttpResponseRedirect(self.get_success_url())
文件“C:\ Program Files \ Python35 \ lib \ site-packages \ django \ views \ generic \ edit.py“in get_success_url 148. url = self.success_url.format(** self.object。 dict )
异常类型:/profile/-.1/create中的AttributeError异常值: 'NoneType'对象没有属性' dict '
答案 0 :(得分:1)
您已覆盖form_valid
方法,但尚未执行该方法执行的任何默认操作,尤其是保存对象。
你可以通过调用super方法解决这个问题,但是没有点;无论如何,重定向到成功URL是该方法所做的。完全删除form_valid
方法并调用现有定义。