有人可以解释为什么我们返回super().form_valid(form)在django的CreateView的form



我正在尝试链接与用户关联的项目

class createItem(CreateView):
model=Item
fields = ['x','y','image']

def form_valid(self,form):
form.instance.user_name=self.request.user
return super().form_valid(form)

这是一个片段,我不明白为什么我们使用super().form_valid(form),我也对在self.request.user中使用self有疑问,我是django的新手,如果有人帮助我,这将非常有帮助。

Super()允许您访问和修改您的基类(class createItem(CreateView))的方法。

因此,在您的示例中,您将登录的用户id插入到表单字段中,而在提交表单之前该字段是不存在的。

def form_valid是一个方法,它基本上会问"表单字段是否有效?"如果答案是肯定的(它们是有效的),那么插入用户id作为一个字段。因此,您正在动态地修改类的默认行为。可以通过调用super来实现。

可能需要阅读更多关于继承的内容。

最新更新