day23 Model 操作,Form 验证以及序列化操作
Model 操作
1创建数据库表
定制表名:


联合唯一索引:
只是在联合索引的基础上加了一个unique =True
数据库的查找:

外键的正向查找:

反向查找:

反向查找指定字段数据:

指定反向查找的别名:

在删除外键约束的表中的数据时,是否删除另一张表在使用此数据的数据:

判读数据库中的数据是否为空:

like

between






统计,求和,最大值,最小值








如果你在取这些结果中没有的其他列的数据,Django 会再去数据库操作,但是这样性能就不行了。
自己指定连接那个数据库:



等于:



性能相关:
正常的取会循环一次取一次ut里的name 性能不行,所以需要加上 就会一次全取出来,可以加参数来选择取哪个关联表的数据

指定ut 连接表:

只获取必须数据:


截取时间,生成想得到的格式:

更细粒度的截取及时区转换:

执行原生sql:





Form 验证:

Form 功能:

创建一个完整的数据,为静态的数据,当需要修改时就需要修改此class:

从数据库获取数据,只是第一次会获取最新数据,也就是说数据库在更新后需要重启程序:


实践:
1 forms:
from django import forms
from django.forms import fields
from django.forms import widgets
from app01 import models
class UserInfoForm(forms.Form):
user = fields.CharField(
required=False,
widget=widgets.Textarea(attrs={'class':'user'})
)
pwd = fields.CharField(
max_length=12,
widget=widgets.PasswordInput(attrs={'class':'pwd'})
)
#1
user_type = fields.ChoiceField(
choices=[],
widget=widgets.Select
)
#2
user_type2 = fields.CharField(
widget=widgets.Select(choices=[])
)
def __init__(self,*args,**kwargs):
super(UserInfoForm,self).__init__(*args,**kwargs)
self.fields['user_type'].choices = models.UserType.objects.values_list('id','name')
self.fields['user_type2'].widget.choices = models.UserType.objects.values_list('id','name')
views:
from django.shortcuts import render
# Create your views here.
def inedex(request):
from app01.forms import UserInfoForm
obj = UserInfoForm()
return render(request,'index.html',{'obj':obj})
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>{{ obj.user }}</p>
<p>{{ obj.pwd }}</p>
<p>{{ obj.user_type }}</p>
<p>{{ obj.user_type2 }}</p>
</body>
</html>
传入参数设置默认值(初始化操作,当打开页面时,select框选择的结果):

form 的更深层次验证,自定义验证:



错误信息捕获:

总结:

序列化操作:
当一个数据不全是python 的数据类型,而是有其他的数据类型,json 就不能序列化此数据,所以需要更细粒度的控制:
使用json 的 default 函数执行细粒度的操作:
给ajax 返回数据时要返回json 但是有一些数据是Django 特有的数据类型,所以需要自定义函数来处理这些数据:



day23 Model 操作,Form 验证以及序列化操作的更多相关文章
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用
一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts import ...
- django(6)model表语句操作、Form操作、序列化操作
1.model建表操作之创建索引.元数据 # 单表操作,创建表 class User(models.Model): name = models.CharField(max_length=32) ema ...
- 04: Form 验证用户数据 & 生成html
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- Django中Form验证
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一,Form验证 第一种操作:主要是这三个函数 ...
- Django(八)下:Model操作和Form操作、序列化操作
二.Form操作 一般会创建forms.py文件,单独存放form模块. Form 专门做数据验证,而且非常强大.有以下两个插件: fields :验证(肯定会用的) widgets:生成HTML(有 ...
- Day23-Model操作,Form操作和序列化操作
参考源出处:http://blog.csdn.net/fgf00/article/details/54629502 1. 搭建环境请参考:http://www.cnblogs.com/momo8238 ...
- Day24-ModelForm操作及验证
Day23内容回顾--缺失,遗憾成狗. 一:Model(2个功能) -数据库操作: -验证,只有一个clean方法可以作为钩子. 二:Form(专门来做验证的)--------根据form里面写的类, ...
- DRF之简介以及序列化操作
1. Web应用模式. 在开发Web应用中,有两种应用模式: 前后端不分离 2.前后端分离 2. api接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实 ...
- Django使用普通表单、Form、以及modelForm操作数据库方式总结
Django使用普通表单.Form.以及modelForm操作数据库主要应用于增删该查的情景下,流程通用如下,只是实现方式不一样: 进入填写表单页面: 在表单页面填写信息,并提交: 表单数据验证 验证 ...
随机推荐
- java.lang.IllegalArgumentException: Document base F:\personal\projects\annoMVC\web does not exist or is not a readable directory
tomcat明明在d盘,怎么到F盘了...纳闷啊... 解决办法: 1停掉Tomcat服务2把/conf/Catalina/localhost下的文件删除掉(我在这个文件夹里发现了一个xml,指向了F ...
- ArcGIS API for JavaScript开发初探——基础知识
1.前言 在ArcGIS Web API开发体系中一共有四大类,分别为: ArcGIS API for Flex ArcGIS API for JavaScript ArcGIS API for RE ...
- ssh登录卡住问题
使用ssh登录远程centos服务器,卡住不动 系统centos 7 加-v查看登录过程,一直卡在这里 解决:我的是mtu问题 将eth0 mtu 默认1500修改为1200就可以了 ifconfig ...
- C#环形缓冲区(队列)完全实现
公司项目中经常设计到串口通信,TCP通信,而且大多都是实时的大数据的传输,然后大家都知道协议通讯肯定涉及到什么,封包.拆包.粘包.校验--什么鬼的概念一大堆,说简单点儿就是要一个高效率可复用的缓存区. ...
- SQL Server 删除当前数据库中所有数据库 ,无视约束
Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: exec sp_msforeachtable @Command1 ='truncate table ?' 删除所有数据表: e ...
- Q9400为何难以100%全速运行
采用基于正域的约简. 数据:Ticdata2000 记录数:5822 条件属性:85 结果: 1. Core i7 3632QM 4四核八线程 2.2G 动态加速3.2G 0.516s 2. Core ...
- 【BZOJ1059】[ZJOI2007] 矩阵游戏(匈牙利算法)
点此看题面 大致题意: 有一个\(N*N\)的\(01\)矩阵,可以任意交换若干行和若干列,问是否有方案使得左上角到右下角的连线上全是\(1\). 题意转换 首先,让我们来对题意进行一波转化. 如果我 ...
- netbackup :nbu备份 Hyper-V 遇到快照错误(状态码 156)
遇到快照错误(状态码 156) 下表介绍与 NetBackup 状态码 156 有关的 Hyper-V 问题. 表:状态码 156 的可能原因 状态码 156 的原因 说明及推荐操作 NetBacku ...
- kafka 开机启动脚本
/etc/init.d$ vi kafka-start-up.sh #!/bin/bash #export KAFKA_HOME=$PATH export KAFKA_HOME=/opt/Kafka/ ...
- Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像(克隆和导入)
Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像: 注:直接复制一个.vdi 虚拟硬盘再挂上去就可以,但Virtualbox居然提示UUID重复,无法使用. 则,可以通过 ...