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 fileinput模块使用介绍
Nov 30 Python
Python从零开始创建区块链
Mar 06 Python
linux下python使用sendmail发送邮件
May 22 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
浅谈python之新式类
Aug 12 Python
Django框架搭建的简易图书信息网站案例
May 25 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
python和go语言的区别是什么
Jul 20 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 Python
python中的random模块和相关函数详解
Apr 22 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
详解vue中组件参数
2018/07/09 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
python字符串,数值计算
2016/10/05 Python
简单了解python PEP的一些知识
2019/07/13 Python
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
幼儿园大班区域活动总结
2014/07/09 职场文书
2015年端午节活动方案
2015/05/05 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
开业典礼致辞
2015/07/29 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
Go 中的空白标识符下划线
2022/03/25 Golang