Django之ModelForm学习
本篇主要的知识点:
- 使用ModelForm 来创建表单
- 为form表单添加自定义样式
- 针对表单中存在文件上传的情况
1.关于ModelForm
在折腾表单的时候,很多时候,我们的表单是需要和数据库打交道的,也就是要把表单内容,存储到数据库。Django提供了ModelForm来帮助我们快速的解决这个问题。主要的流程如下:
- 创建模型,定义需要的内容。
- 创建表单,继承ModelForm类,配置需要的列及样式等。
- 创建视图,编写相关的视图逻辑,并注册路由。
参考:
(省略部分代码,保留关键部分)
模板:
2.关于自定义样式
可以参考上面的代码离,有一个简单的例子。
需要注意的是针对日期选择器的场景,额,选择DateInput这个东西,在前端还是会转换为text的模式,所以需要自己实现一下。
3. 关于存在文件上传的场景
看文档的时候,使用modelform的时候,大家把数据存储到表单的时候,都仅仅是一个form.save()。然后我也一模一样的写了进去。但是呢,很遗憾,没有成功~
查了一些资料,然后找到一些原因:
- 表单没有加:enctype="multipart/form-data"
- view的生成form的时候要有request.FILES
- html用于上传文件的input名字和form定义的是否一致
- 。。。
不过,这些好像并没有解决我的问题。
额,好像又错过了什么。是的,需要request.FILES。而且,官方文档里,其实把这个问题,特别加注过,只是当时没有懂得为什么。
视图这里应该这样写: