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中for循环详解
Jan 17 Python
Python中函数的用法实例教程
Sep 08 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
在Python中操作时间之tzset()方法的使用教程
May 22 Python
Python实例一个类背后发生了什么
Feb 09 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
记录Python脚本的运行日志的方法
Jun 05 Python
python变量命名的7条建议
Jul 04 Python
python实现静态web服务器
Sep 03 Python
python实现的读取网页并分词功能示例
Oct 29 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
python如何设置静态变量
Sep 07 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
python解析文件示例
2014/01/23 Python
python实现rest请求api示例
2014/04/22 Python
python随机生成指定长度密码的方法
2015/04/04 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
python监控nginx端口和进程状态
2019/09/06 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
行政管理毕业生自荐信
2014/02/24 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
集中采购方案
2014/06/10 职场文书
2014年项目工作总结
2014/11/24 职场文书
校长个人总结
2015/03/03 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js