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的介绍相关推荐

  1. Django models常用Field介绍以及常见错误解决

    原文地址:https://www.cnblogs.com/limaomao/p/9255148.html ORM:object relational mapping,对象关系映射 django中使用原 ...

  2. Django - Celery使用及介绍

    1.Celery介绍 1.1 celery应⽤举例 Celery 是⼀个 基于python开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处 理,如果你的业务场景中需要⽤到异步任务,就 ...

  3. Django之Form组件介绍

    --------------------------------------前言------------------------------------ 在进入正题之前,想多说两句; 当我们开始学习一 ...

  4. Django框架之入门介绍

    Python下有许多款不同的Web框架.Django(发音:[`dʒæŋɡəʊ]) 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于Django. 作为Python最重要的框架之一,Dja ...

  5. DRF (Django REST framework) 框架介绍

    Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离 前后端分离 1 前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控 ...

  6. DRF (Django REST framework) 框架介绍(3)

    DRF中的Request 与 Response 1. Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST fra ...

  7. python高校学生社团管理系统django项目源码介绍

    高校社团是高校学生根据自身的兴趣爱好自愿组成,按照章程开展活动的学生组织.学生社团已渐渐成为校园文化生活中重要的组成部分,在我校扮演着校园活动的主力军角色. 社团为学生的活动搭造了舞台,让同学们有了更 ...

  8. Django的信号Signals介绍及使用

    Django提供一种信号机制.其实就是观察者模式,又叫发布-订阅(Publish/Subscribe) .当发生一些动作的时候,发出信号,然后监听了这个信号的函数就会执行.通俗来讲,就是一些动作发生的 ...

  9. Django基础篇(1)--介绍

    这里是清安,欢迎查阅本篇文章.我的微信号是qing_an_an,欢迎来扰! 目录 安装 命令 创建项目 创建应用 运行项目 数据库 账号密码 重置密码

最新文章

  1. 赢在中国(08-02-27)
  2. 贪心算法--多处最优服务次序问题
  3. JAVA EXCEL API详解
  4. Ransomware Cerber Analysis
  5. BZOJ 1211 树的计数(purfer序列)
  6. python文件数据总和计算_python 计算文件夹里所有内容的大小总和
  7. Android 屏幕尺寸知识
  8. 前端学习(572):margin无效情形inline水平元素的margin无效
  9. softmax回归的简洁实现-09-p5
  10. Spring boot 日志框架
  11. 磁盘在linux是什么文件,鸟哥的 Linux 私房菜 -- Linux 磁盘与文件系统管理
  12. MySQL-第一篇认识MySQL
  13. 谷歌浏览器正式版(稳定版)离线安装包下载大全
  14. 在企业中采用知识管理工具的好处
  15. Java代理模式详解
  16. Vue项目调用扫一扫功能 亲测好用!!!
  17. Linux内核4.4 init,linux4.4内核启动到INIT: version 2.88 booting 卡住
  18. Win10如何清除运行历史记录
  19. modelsim和vivado仿真不一致——噩梦debug
  20. win10清理_win10系统垃圾清理方法教程

热门文章

  1. android 机子 启动不进入 android
  2. 如何在DOS下不显示输入字符
  3. 英语总结系列(八):回顾八月展望九月
  4. Nature:读博不该有害身体健康
  5. Uber发布的CoordConv遭深度质疑,“翻译个坐标也需要训练?”
  6. 怎样三天训练出AI围棋大师?教你AlphaGo Zero的3个trick
  7. SQL注入和XSS攻击的原理
  8. PHP常用的数组相关处理函数
  9. 如何在UIimageview里显示一张图片里的某一部分
  10. 开源容器集群管理系统Kubernetes架构及组件介绍