Django的Modelforms的介绍
from django.forms import ModelForm
class 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
Django的Modelforms的介绍的更多相关文章
- Django默认权限机制介绍及实践
演示Django版本为当前最新版本v2.2 当Django配置文件中的INSTALL_APPS包含了django.contrib.auth时,就默认启用了一个简单的权限系统,提供了为用户或组分配权限的 ...
- Celery在Django中的使用介绍
Celery在Django中的使用介绍 Celery简介 celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必须工具. 它是一个专注于实时处理的任务队列,同时也 ...
- 用Django做一个团队介绍
所用工具 Pycharm 社区版 Django 2.x Python 3.6.4 总目录 settings中的设置 总的路由设置 templates中的index.html文件 <!DOCTYP ...
- Django REST framework框架介绍和基本使用
Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...
- django中的ORM介绍和字段及字段参数
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Django中的ORM介绍,字段以及字段的参数。
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Django视图层详细介绍
1 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...
- Django框架学习-01Django介绍
01-Django介绍 02-HTTP协议介绍 01-Django介绍 1.什么是Web框架? 随着Web最新发展趋势的不断升级,Web项目开发也越来越难,而且需要花费更多的开发时间.所以,Web程序 ...
- Django 中得ORM介绍和字段及字段参数
ORM 介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说 ORM 是通过使用 ...
随机推荐
- Spring boot 日志
修改spring boot 默认日志的配置 #logging.path= # 不指定路径在当前项目下生成springboot.log日志 # 可以指定完整的路径: #logging.file=G:/s ...
- ORM对单表的增删改查
表记录的增加: 1)b = Book(name='python', price=99) b.save() 2)Book.objects.create(name='python', price=99) ...
- ubuntu oracle 环境搭建
安装 Oracle SQL Developer Oracle客户端安装 https://oracle.github.io/odpi/doc/installation.html#linux
- Linux命令:索引
目录 A B C D E F G H I jobs J K L M N nohup O P Q R S T trU V W X Y Z A alias B C cd D dirs E F G ...
- 配置nginx实现windows/iis应用负载均衡(转载)
配置nginx实现windows/iis应用负载均衡 nginx是俄罗斯人开发的一款跨平台的高性能HTTP和反向代理服务器,可以利用它实现web应用服务器的负载均衡. 反向代理是指将用户请求通过代 ...
- Spring+Quartz 实现定时任务的配置方法
Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...
- T-SQL行合并成列与列拆分成行
本文出处:http://www.cnblogs.com/wy123/p/6910468.html 感觉最近sql也没少写,突然有一点生疏了,对于用的不是太频繁的一些操作,时间一久就容易生. 多行的某一 ...
- Hibernate学习笔记2.3(Hibernate基础配置)
映射,注释可以放在成员变量上面,也可以放在get方法上面 写在成员变量的话 破坏了java的面向对象思维 直接让hibernate访问内部的私有元素 要是能直接设指不合适哈哈 所以主张写在get方法上 ...
- C++ 网络编程 总结
第一次用C++写程序,对C++ 只是菜鸟级别的,倒是对C#很熟悉.两者有很大的相似性.但也有不同. 首先写了一个网络通讯用的小的MFC程序.发现 (1)MFC写界面真的好麻烦呀. 用C#写的tab ...
- SQL调用C# dll(第一中DLL,没使用强名称密匙,默认是 safe)
https://msdn.microsoft.com/zh-cn/library/ms345106(es-es).aspx 1.新建项目名称SQLDllTest,类代码如下,没有用Using引用其他类 ...