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实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
详解Python import方法引入模块的实例
Aug 02 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
用pycharm开发django项目示例代码
Oct 24 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
pow在python中的含义及用法
Jul 11 Python
Python坐标线性插值应用实现
Nov 13 Python
Python实现AI自动抠图实例解析
Mar 05 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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
11个PHP 分页脚本推荐
2011/08/15 PHP
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
python中的计时器timeit的使用方法
2017/10/20 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
名词解释型面试题(主要是网络)
2013/12/27 面试题
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
会计自荐书
2013/12/02 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
语文教学感言
2014/02/06 职场文书
工程质量月活动方案
2014/02/19 职场文书
企业员工培训感言
2014/02/26 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
浅谈Redis的事件驱动模型
2022/05/30 Redis