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中的floor()方法
May 15 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
Flask框架配置与调试操作示例
Jul 23 Python
Python实现分段线性插值
Dec 17 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
关于python3中setup.py小概念解析
Aug 22 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 Python
python中类与对象之间的关系详解
Dec 16 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
提高php编程效率技巧
2015/08/13 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
axios学习教程全攻略
2017/03/26 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python实现杨氏矩阵查找
2019/03/02 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
Python实现某论坛自动签到功能
2019/08/20 Python
最小二乘法及其python实现详解
2020/02/24 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Python3如何判断三角形的类型
2020/04/12 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
思想品德自我鉴定
2013/10/12 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
高二英语教学反思
2014/01/19 职场文书
爱祖国演讲稿
2014/05/04 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
死亡诗社观后感
2015/06/05 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书