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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
Python中如何获取类属性的列表
Dec 26 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
pytest配置文件pytest.ini的详细使用
Apr 17 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 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
php桌面中心(一) 创建数据库
2007/03/11 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
JS画线(实例代码)
2013/11/20 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
javascript生成大小写字母
2015/07/03 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
python optparse模块使用实例
2015/04/09 Python
浅谈Python中函数的参数传递
2016/06/21 Python
Python Socket编程详细介绍
2017/03/23 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
numpy 声明空数组详解
2019/12/05 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
应届电子商务毕业自荐书范文
2014/02/11 职场文书
人事科岗位职责范本
2014/03/02 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
入党介绍人考察意见
2015/06/01 职场文书
婚礼家长致辞
2015/07/27 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
Nginx如何配置根据路径转发详解
2022/07/23 Servers