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使用win32com库播放mp3文件的方法
May 30 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
基于python时间处理方法(详解)
Aug 14 Python
Python实现两款计算器功能示例
Dec 19 Python
Python中fnmatch模块的使用详情
Nov 30 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
如何基于python测量代码运行时间
Dec 25 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 Python
Python快速实现一键抠图功能的全过程
Jun 29 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执行速度全攻略
2006/10/09 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
技能比武方案
2014/05/21 职场文书
实习护士自荐信
2014/06/21 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
民间借贷被告代理词
2015/05/23 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis