Django中modelform组件实例用法总结
作者:piaoxuexie 发布时间:2023-09-28 14:35:49
modelform是model衍生出来的form .
modelform的用法非常死.
首先在models.py里创建模型表.
所有的form组件单独放在form.py文件,其他地方引入form就可以.
创建modelfrom
只要告诉modelform哪一个模型表,它会自动帮我们比对models模型表字段,并衍生成form组件.它不光给我们提供form组件,还有组件没有的功能.
所有字段都生成form组件.
fields="__all__"
username和password字段生成form组件.
fields=['username','password']
排除gender字段以外都生成form组件.
exclude=['gender']
modelform用在两个地方,一个是添加,一个是编辑.
添加数据
form添加数据先从form取数据,然后在用models插入数据.
modelform直接form.save()就可以插入数据.
编辑数据get请求.
form传值给模板的时候要添加instance数据,否则模板渲染的时候value是空的.
编辑数据post请求.
form.save()的时候要给form添加instance数据,否则会变成create操作,不是update更新操作.
知识点扩展
创建类
from django.forms import ModelForm
from django.forms import widgets as wd
from app01 import models
class 类名(ModelForm):
class Meta:
model = models.表名 #models中的表名
fields="__all__", # 字段
exclude=None, # 排除字段
widgets=None, # 自定义插件
error_messages=None, # 自定义错误信息(整体错误信息from django.core.exceptions import NON_FIELD_ERRORS)
def clean_字段名 #自定义钩子函数
实例化对象
form = 类名(instance=obj,data=request.POST)
instance传的是已有的对象(在页面中显示默认值)
data传的是从页面返回过来的值(用户输入的值 ,用来验证)
form.is_valid() #验证
form.save #将数据保存至数据库中(如果有instance参数就修改数据库中的记录,如果没有instance参数就在数据库中添加新的一条记录)
来源:https://jingyan.baidu.com/article/3ea5148909b96f12e61bba97.html
猜你喜欢
- 在Oracle本地数据库端执行赋权dbuser帐号SQL> grant create database link to dbuser;
- 1. 查看数据库的版本select @@version2.查看数据库所在机器操作系统参数exec master..xp_msver3. 查看
- 本文实例讲述了Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法。分享给大家
- select a.f_username from ( SELECT /*+parallel(gu,4)*/distinct gu.f_use
- 分区视图联接来自一组成员的水平分区数据,使数据看起来象来自同一张表。SQL Server 2000 区分本地分区视图和分布式分区视图。在本地
- 所有数据库和状态文件都包含在其中。但是,在确定数据目录内容的布局中管理员有某些职责。本文讨论为什么要移动数据目录的各个部分(甚至是字典本身)
- 你已经在上面取出w打头记录的例子中看到了LIKE的用法。LIKE判定词是一个非常有用的符号。不过,在很多情况下用了它可能会带给你太多的数据,
- Smptp类定义:smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]),作为SMTP的
- <!DOCTYPE html PUBLIC "-//W3C//DTD X
- 怎么增大MySQL数据库连接数,MYSQL数据库安装完成后,默认连接数是100,流量稍微大一点的论坛或网站这个连接数是不够哟用
- 原文: gradio.app/interface-s…1.全局状态例子来解释import gradio as grsc
- 企业管理器中没有改数据库名的功能,如果一定要用企业管理器来实现,你可以备份数据库,然后还原,在还原时候可以指定另一个库名,然后再删除旧库就行
- 1.如何将Query String传送到另一个ASP文件去?Response.Redirect("second.asp? 
- 1、终极方法:条件注释<!--[if lte IE 6]> 这段文字仅显示在 IE6及IE6以下版本。 <![endif]
- 我们知道,数组的sort方法可以对数组元素进行排序,默认是按ASCII字母表顺序排序。如果要根据其他的顺序排序就需要为sort方法提供一个比
- 有时在处理不规则数据时需要提取文本包含的时间日期。dateutil.parser模块可以统一日期字符串格式。datefinder模块可以在字
- 有个帖子写的检查全角的 <script> fun
- CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和Firefox存在很大的解析差异,这里介绍一下兼容要点。常见兼容问题:1、DOCTY
- 问题: 1.购物车中的数据是否应该存储在数据库中? 我特别想知道在真正的项目中,那些真正的软件工程师是如何考虑这个问题的。在Google上一
- 这是一种相对比较复杂的图表,但是仍然遵循上篇中提出的最基本的思路。本例中使用的定义列表标签dl可能平常我们见得不多,一般我们在做列表的时候通