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中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
Python之自动获取公网IP的实例讲解
Oct 01 Python
对numpy中array和asarray的区别详解
Apr 17 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
python+mysql实现个人论文管理系统
Oct 25 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
Django如何实现密码错误报错提醒
Sep 04 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
Pandas自定义选项option设置
Jul 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使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
详解redux异步操作实践
2018/08/15 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
Python中Collection的使用小技巧
2014/08/18 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python生成excel的实例代码
2017/11/08 Python
python selenium循环登陆网站的实现
2019/11/04 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
日语翻译个人求职的自我评价
2013/10/14 职场文书
新闻发布会主持词
2014/03/28 职场文书
2014年小学工作总结
2014/11/26 职场文书
党员活动总结
2015/02/04 职场文书
工程技术员岗位职责
2015/04/11 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL