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中split方法用法分析
Apr 17 Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
常见python正则用法的简单实例
Jun 21 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
Python获取数据库数据并保存在excel表格中的方法
Jun 12 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
python实现WebSocket服务端过程解析
Oct 18 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
python实现tail -f 功能
Jan 17 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 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查询搜索引擎排名位置的代码
2010/01/05 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
PHP中常用的魔术方法
2017/04/28 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python里大整数相乘相关技巧指南
2014/09/12 Python
python实现封装得到virustotal扫描结果
2014/10/05 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
python批量修改ssh密码的实现
2019/08/08 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
十一个高级MySql面试题
2014/10/06 面试题
自我鉴定书面格式
2014/01/13 职场文书
七年级英语教学反思
2014/01/15 职场文书
高二政治教学反思
2014/02/01 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
清洁工岗位职责
2015/02/13 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python