python - 有人可以解释为什么我们在 django 的 CreateView 中的 form_valid 方法中返回 super().form_valid(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 也有疑问self.request.user
,我是 django 的新手,如果有人帮助我,这将非常有帮助。
解决方案
Super()
允许您访问和修改基类的方法(class createItem(CreateView))
。
因此,在您的情况下,您将登录的用户 ID 插入到表单字段中,而在提交表单之前该字段不存在。
def form_valid
是一种基本上询问“表单字段有效吗?”的方法。如果答案是肯定的(它们是有效的),则将用户 ID 作为字段插入。因此,您正在动态修改类的默认行为。你可以通过调用 super 来做到这一点。
可能想阅读更多关于继承的信息。
推荐阅读
- javascript - 为什么我在 Safari 上的 Writable Div InnerHTML 长度错误?
- sql - SQL 查询结果:交叉表/数据透视表
- python - 将 DataFrame 从一个类返回到另一个类
- c# - C#根据给定类型获取派生类作为本地var并在范围外使用它
- react-native - Flatlist不同部分的不同numColumns
- html - 在角度 9 中重新加载页面后如何保持复选框的状态?
- python - Python从存储在列表中的字符串设置数据框名称
- ckeditor - Strapi CKEditor 显示富文本字段的 MediaLib 图像
- javascript - 为什么我的 Javascript 画布不能在键盘输入上移动?
- optimization - Julia JuMP - 目标函数中的“max”错误:没有方法匹配 isless