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编程模板汇总
Feb 12 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
Python2与Python3的区别实例总结
Apr 17 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
Python autoescape标签用法解析
Jan 17 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Django框架实现在线考试系统的示例代码
Nov 30 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 图片上传实现代码 带详细注释
2010/04/29 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
快速了解Python相对导入
2018/01/12 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python3匿名函数用法示例
2018/07/25 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
智能钱包:Ekster
2019/11/21 全球购物
思想品德课教学反思
2014/02/10 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
追悼词范文大全
2015/06/23 职场文书
初级职称评定工作总结
2015/08/13 职场文书
关于环保的广播稿
2015/12/17 职场文书
车辆挂靠协议书
2016/03/23 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技