Django的Modelforms的介绍
from django.forms import ModelFormclass Test(ModelForm):# 把那张表转化成form组件class Meta:# 这个意思即是把Article转化成form组件model = models.Article# 把表中的所有的字段都做转化,这里也可以传递一个list,可以指定显示某些字段fields = "__all__"# modelform组件的使用方法和forms组件的用法一样,但是i如果要保存出数据的时候,可以直接调用save方法保存就可以了,无论是单表,一对多,还是多对多# 如果增加数据# form = Test(request.POST)# if form.isvalid():# form.save()# 这样就可以直接保存# 如果编辑数据,用下面的方法就可以把当前的对象的值渲染到form表单中,无论是单表,一对多,还是多对多# obj = models.Article.objects.all().first()# form = Test(instance=obj)# 上面是实现渲染数据到form表单# form = Test(request.POST,instance=obj)# if form.isvalid():# form.save()# 这个就是实现更新操作,和增加操作唯一的区别就是通过instance传递一个要编辑的对象进去就可以了
简单的用了一下model_forms,觉得还是不是很好用
我是用书、出版社,作者三张表来做这个联系
首先下面这个函数是用来展示书籍信息
def test_models(request):method = request.method.lower()if method == "get":body_list = []obj = models.Book.objects.all()head_list = models.Book._meta.get_fields()for i in obj:temp = []temp.append(i.bid)temp.append(i.title)temp.append(i.publish)temp.append(i.auther.all())body_list.append(temp)return render(request,"modelform_html1.html",locals())else:pass
下面这个类就是modelform的类
class test(ModelForm):
class Meta:
model = models.Book
fields = "__all__"
labels = {"title":"书籍的名称","auther":"作者","publish":"出版社"}
error_messages = {
"title":{"required":"不允许为空",
"invalid":"格式错误"
}
}
widgets = {
"title":wd.TextInput(attrs={"placeholder":"密码"})
}field_classes = {
"title":forms.EmailField
}
下面这个函数是用来处理处理添加书籍的操作
def add(request):method = request.method.lower()if method == "get":model_form_obj = test()for i in model_form_obj:print(i.label_tag(),"----------------------")return render(request,"modelfrom_add.html",locals())else:model_form_obj = test(request.POST)if model_form_obj.is_valid():model_form_obj.save()return redirect("/app2/test_models/")else:print("出错了")model_form_obj = test(request.POST)return render(request, "modelfrom_add.html", locals())
下面这个函数是用来处理编辑书籍的
def edit(request):method = request.method.lower()book_obj = models.Book.objects.get(bid=int(request.GET.get("id")))if method == "get":model_form_obj = test(instance=book_obj)return render(request,"modelfrom_add.html",locals())else:model_form_obj = test(request.POST,instance=book_obj)model_form_obj.save()return redirect("/app2/test_models/")
参考博客
http:
//www
.cnblogs.com
/wupeiqi/articles/6144178
.html 武sir:Form组件
http:
//www
.cnblogs.com
/wupeiqi/articles/6216618
.html 武sir:Model
http:
//www
.cnblogs.com
/wupeiqi/articles/6229414
.html 武sir:ModelForm
转载于:https://www.cnblogs.com/bainianminguo/p/10029874.html
Django的Modelforms的介绍相关推荐
- Django models常用Field介绍以及常见错误解决
原文地址:https://www.cnblogs.com/limaomao/p/9255148.html ORM:object relational mapping,对象关系映射 django中使用原 ...
- Django - Celery使用及介绍
1.Celery介绍 1.1 celery应⽤举例 Celery 是⼀个 基于python开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处 理,如果你的业务场景中需要⽤到异步任务,就 ...
- Django之Form组件介绍
--------------------------------------前言------------------------------------ 在进入正题之前,想多说两句; 当我们开始学习一 ...
- Django框架之入门介绍
Python下有许多款不同的Web框架.Django(发音:[`dʒæŋɡəʊ]) 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于Django. 作为Python最重要的框架之一,Dja ...
- DRF (Django REST framework) 框架介绍
Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离 前后端分离 1 前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控 ...
- DRF (Django REST framework) 框架介绍(3)
DRF中的Request 与 Response 1. Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST fra ...
- python高校学生社团管理系统django项目源码介绍
高校社团是高校学生根据自身的兴趣爱好自愿组成,按照章程开展活动的学生组织.学生社团已渐渐成为校园文化生活中重要的组成部分,在我校扮演着校园活动的主力军角色. 社团为学生的活动搭造了舞台,让同学们有了更 ...
- Django的信号Signals介绍及使用
Django提供一种信号机制.其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) .当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行.通俗来讲,就是一些动作发生的 ...
- Django基础篇(1)--介绍
这里是清安,欢迎查阅本篇文章.我的微信号是qing_an_an,欢迎来扰! 目录 安装 命令 创建项目 创建应用 运行项目 数据库 账号密码 重置密码
最新文章
- 赢在中国(08-02-27)
- 贪心算法--多处最优服务次序问题
- JAVA EXCEL API详解
- Ransomware Cerber Analysis
- BZOJ 1211 树的计数(purfer序列)
- python文件数据总和计算_python 计算文件夹里所有内容的大小总和
- Android 屏幕尺寸知识
- 前端学习(572):margin无效情形inline水平元素的margin无效
- softmax回归的简洁实现-09-p5
- Spring boot 日志框架
- 磁盘在linux是什么文件,鸟哥的 Linux 私房菜 -- Linux 磁盘与文件系统管理
- MySQL-第一篇认识MySQL
- 谷歌浏览器正式版(稳定版)离线安装包下载大全
- 在企业中采用知识管理工具的好处
- Java代理模式详解
- Vue项目调用扫一扫功能 亲测好用!!!
- Linux内核4.4 init,linux4.4内核启动到INIT: version 2.88 booting 卡住
- Win10如何清除运行历史记录
- modelsim和vivado仿真不一致——噩梦debug
- win10清理_win10系统垃圾清理方法教程