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 相关文章推荐
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
详解Django中Request对象的相关用法
Jul 17 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
PHP统计代码行数的小代码
Sep 19 Python
python实现KNN分类算法
Oct 16 Python
python快速排序的实现及运行时间比较
Nov 22 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
Apr 14 Python
python爬取新闻门户网站的示例
Apr 25 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
React实现todolist功能
2020/12/28 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
Python中函数参数匹配模型详解
2019/06/09 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
C++面试题目
2013/06/25 面试题
产品工艺师的岗位职责
2013/11/15 职场文书
银行求职推荐信范文
2013/11/30 职场文书
趵突泉导游词
2015/02/03 职场文书
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
Rust中的Struct使用示例详解
2022/08/14 Javascript