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中writelines()方法的使用
May 25 Python
Python中for循环控制语句用法实例
Jun 02 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
使用python实现滑动验证码功能
Aug 05 Python
python实现计算器功能
Oct 31 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
在python3中实现更新界面
Feb 21 Python
Django+Django-Celery+Celery的整合实战
Jan 20 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
第十五节--Zend引擎的发展
2006/11/16 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
通过Pandas读取大文件的实例
2018/06/07 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
tensorflow 变长序列存储实例
2020/01/20 Python
Python日志syslog使用原理详解
2020/02/18 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
static关键字的用法
2013/10/07 面试题
计算机应用专业推荐信
2013/11/13 职场文书
食堂员工工作职责
2013/12/18 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
承诺书模板
2014/08/30 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书