neu*_*rix 7 django validation django-class-based-views class-based-views django-1.5
在我的CreateView班级中,我将覆盖以下form_valid()函数:
class ActionCreateView(CreateView):
model = Action
form_class = ActionCreateForm
success_url = reverse_lazy('profile')
def get_initial(self):
initial = super(ActionCreateView, self).get_initial()
initial['request'] = self.request
return initial
def form_valid(self, form):
form.instance.user = self.request.user
print 'user: %s'%form.instance.user
try:
da = form.cleaned_data['deadline_date']
ti = datetime.now()
form.instance.deadline = datetime(da.year, da.month, da.day, ti.hour, ti.minute, ti.second )
except Exception:
raise Http404
return super(ActionCreateView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
但事实证明,该form_valid方法永远不会被调用,因为user它永远不会打印出来.有趣的clean是,调用forms.py中的方法.
没有显示错误(因此我没有要显示的回溯).用户只是重新定向到表单. 这种行为可能是什么原因? 我正在使用Django 1.5和Python 2.7.
小智 2
form.instance.user = self.request.user 错误
请尝试这个变体:
def form_valid(self, form):
self.object = form.save(commit=False)
if self.request.user.is_authenticated():
self.object.user = self.request.user
# Another computing etc
self.object.save()
return super(ActionCreateView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
PS 你真的需要改变 get_initial 吗?在你的代码上我没有看到这种需要。