Python Django表单无效
我是django的新手。有人能帮我写这段代码吗。我试图计算2个日期字段之间的持续时间,然后保存Python Django表单无效,python,django,Python,Django,我是django的新手。有人能帮我写这段代码吗。我试图计算2个日期字段之间的持续时间,然后保存 class EmployeeCreate(CreateView): model = Employee form_class = EmployeeCreateForm success_url = "/employee-list/" def form_valid(self, form): self.object.total_leave = (self.ob
class EmployeeCreate(CreateView):
model = Employee
form_class = EmployeeCreateForm
success_url = "/employee-list/"
def form_valid(self, form):
self.object.total_leave = (self.object.to_date - self.object.from_date).days +1
self.object.save()
return HttpResponseRedirect(self.get_success_url())
有两个问题
form.instance
而不是self.object
def form_valid(self, form):
form.instance.total_leave = (self.instance.to_date - self.instance.from_date).days +1
form.instance.save()
return super(EmployeeCreate, self).form_valid(form)
参考文档,因为
CreateView
首先您必须保存表单才能获取对象
不要将对象持久化到数据库以进行进一步自定义(commit=False
)
然后更改对象以满足您的需求。最后,将对象持久化到数据库中并返回重定向响应
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.total_leave = (self.object.to_date - self.object.from_date).days + 1
self.object.save()
return HttpResponseRedirect(self.get_success_url())
另请查看modelformixin
中的基本form\u valid
实现:
def form_valid(self, form):
self.object = form.save()
return super(ModelFormMixin, self).form_valid(form)
def form_valid(self, form):
return HttpResponseRedirect(self.get_success_url())
然后super(ModelFormMixin,self)。form\u有效(form)
链接到FormMixin
:
def form_valid(self, form):
self.object = form.save()
return super(ModelFormMixin, self).form_valid(form)
def form_valid(self, form):
return HttpResponseRedirect(self.get_success_url())
因此,我们将这两个步骤结合在一个方法中。我无法计算并保存总假期。它没有保存任何内容现在获取错误异常值:“非类型”对象没有属性“total_leave”获取错误:异常值:“EmployeeCreate”对象没有属性“instance”def form_valid(self,form):form.instance.total_leave=(form.instance.to_date-form.instance.from_date)。days+1 form.instance.save()return super(LeaveCreate,self)。form_valid(form)另一个愚蠢的问题如何检查字段leave_balance中是否有值,我想在第一次有leave_type=models时从另一个关系表计算leave_balance。ForeignKey(Leavetype)我第一次想要像Leavetype.leave\u duration-total\u leave实际答案是否错误?我们应该对其进行编辑以使其正确。当我第一次来到这里时,我很困惑。@trpt4him,答案是正确的,OP由于打字错误而出错。