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多进程操作实例
Nov 21 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
Python使用django搭建web开发环境
Jun 09 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
python实现外卖信息管理系统
Jan 11 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
在python3.5中使用OpenCV的实例讲解
Apr 02 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
python定义类self用法实例解析
Jan 22 Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 Python
Python用户自定义异常的实现
Dec 25 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的大小写敏感问题整理
2011/12/29 PHP
简单JS代码压缩器
2006/10/12 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
Python中itertools的用法详解
2020/02/07 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
服装公司总经理岗位职责
2013/11/30 职场文书
运动会口号大全
2014/06/07 职场文书
护士医德医风自我评价
2014/09/15 职场文书
公司给客户的感谢信
2015/01/23 职场文书
求职自我评价怎么写
2015/03/09 职场文书
电影建党伟业观后感
2015/06/01 职场文书
python某漫画app逆向
2021/03/31 Python
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers