Django的Modelforms用法简介


Posted in Python onJuly 27, 2019
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传递一个要编辑的对象进去就可以了

Django的Modelforms用法简介

简单的用了一下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/")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django中实现点击图片链接强制直接下载的方法
May 14 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
python中函数传参详解
Jul 03 Python
python3.4用函数操作mysql5.7数据库
Jun 23 Python
利用Python破解斗地主残局详解
Jun 30 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 Python
在django admin中添加自定义视图的例子
Jul 26 #Python
深入了解Django中间件及其方法
Jul 26 #Python
如何在Django项目中引入静态文件
Jul 26 #Python
Python 画出来六维图
Jul 26 #Python
django做form表单的数据验证过程详解
Jul 26 #Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 #Python
解决python中导入win32com.client出错的问题
Jul 26 #Python
You might like
基于pear auth实现登录验证
2010/02/26 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
javascript截取字符串小结
2015/04/28 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
Node.js的特点详解
2017/02/03 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python通过线程实现定时器timer的方法
2015/03/16 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
Python实现图片拼接的代码
2018/07/02 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
python3安装crypto出错及解决方法
2019/07/30 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
香港交友网站:be2香港
2018/07/22 全球购物
土木工程应届生自荐信
2013/09/24 职场文书
研究生自我鉴定范文
2013/10/30 职场文书
领导的自我鉴定
2013/12/28 职场文书
赡养老人协议书
2014/04/21 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2014年技术部工作总结
2014/12/12 职场文书
2015党建工作简报
2015/07/21 职场文书
公司人力资源管理制度
2015/08/05 职场文书
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫