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中List.index()方法的使用教程
May 20 Python
Python中subprocess的简单使用示例
Jul 28 Python
Python合并字典键值并去除重复元素的实例
Dec 18 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
Pandas 合并多个Dataframe(merge,concat)的方法
Jun 08 Python
详解python3中zipfile模块用法
Jun 18 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
Python参数传递及收集机制原理解析
Jun 05 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
聊聊Python中关于a=[[]]*3的反思
Jun 02 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 验证码制作(网树注释思想)
2009/07/20 PHP
flash javascript之间的通讯方法小结
2008/12/20 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
关于迟到的检讨书
2014/01/26 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL