Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django表单无效_Python_Django - Fatal编程技术网

Python Django表单无效

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

我是django的新手。有人能帮我写这段代码吗。我试图计算2个日期字段之间的持续时间,然后保存

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由于打字错误而出错。