Django 模型笔记
关于模型:
1:一个模型类对应一个表,模型类中的属性对应表中的一个字段
2:字段类型(数据库支持的类型)
模型属性
字符串
1:CharField(Maxlength=长度)
models.CharField
2:TextFiled 大文本
3:IntegerField 整数
4:DecimalField(max_digits=None,decimal_places=None) 小数
max_digits 位数总数 decimal_places 小数点后的位数
5:FloatField 小数
6:BooleanField true/false字段
7:DateField([auto_now=False,auto_now_add=False]) 日期
参数 auto_now:表示每次保存对象时,自动设置该字段为当前时间
auto_now_add:表示当对象第一次被创建时,设置该字段为当前时间
这两个参数互斥
8:TimeField 时间 参数同上
9:DateTimeField 日期加时间 参数同上
10:FileField 一个上传文件你的字段
11:ImageField 继承了FileField的所有属性和方法,对上传的对象进行确认,确保是一个image
字段选项
1:null 默认False 若为true 则以null存入数据库
2:blanke True则允许空值
3:db_column 命名数据库列名称,不设置默认模型里的属性名
4:primary_key 主键
5:unique 若为true 则这个字段在表中有唯一值
模型成员
类属性
(1)objects
manage 的一个对象,作用是与数据库进行交互
例:Students.objects.get(pk=1) 获取id为1的学生,可以进行增删改查
当定义模型类时没有定义管理器,系统自动定义一个名叫objects的管理器
(2)自定义管理器
例:
class grades(models.Model):
stuobj=gradesManager()
gname=models.CharField(max_length=20)
def __str__(self):
return self.gname
在Students模型类中加入:
stuobj=models.Manager()#设定一个名叫obj的管理器
在以后这个类的访问中,可以使用Students.obj.get()或者all()等方法
自定义后,objects就不能再使用了
(3)自定义管理器Manager类
模型管理器是django的模型与数据库进行数据交互的接口,一个模型类可以有多个管理器
用处:
1:可以添加额外的方法(即除get(),all())
2:修改管理器返回的查询集合(过滤)->重写get.queryset()方法
例:
class gradesManager(models.Manager):
def get_queryset(self):
return super(gradesManager,self).get_queryset().filter(id=1)
此处重写的get_queryset()方法,筛选出id=1的信息
当然使用的时候要用stuobj()进行操作
2:创建对象
目的 向数据库中添加数据
当创建对象时,Django不会与数据库进行交互,当调用save()时,才与数据库进行交互,将数据保存在数据库中的表中
注意:__init__方法已经在models.Model使用,在自定义的模型中无法使用
方法1: 在模型类中增加一个类方法
@classmethod
def creatstudent(cls,name):
stu=cls(gname=name)
return stu
使用 在views中:
def CreatStudent(request):
stu=grades.creatstudent("芝庞顿")
stu.save()
return HttpResponse('融合升级,芝庞顿')
方法2:在定义管理器中添加一个方法
定义一个类方法创建对象
例:
class gradesManager(models.Manager):
def get_queryset(self):
return super(gradesManager,self).get_queryset().filter(id=1)
#创建对象
def creatStudent(self,name):
stu=self.model()
stu.gname=name
return stu
使用:在views里
def Creatstudent(request):
stu=grades.stuobj2.creatStudent("海帕杰顿")#在grades类中创建了stuobj2=gradesManager()
stu.save()
return HttpResponse("1234")
Django 模型笔记的更多相关文章
- Django学习笔记(2)——模型,后台管理和视图的学习
一:Web投票示例 本节我们首先从全局范围再复习一下Django的概念,让自己对Django的设计理念, 功能模块,体系架构,基本用法有初步的印象. Django初始的详细博客内容:请点击我 该应用包 ...
- Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录
一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...
- 运维开发笔记整理-Django模型语法
运维开发笔记整理-Django模型语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模型基本概念 1>.什么是模型 模型是你的数据唯一的,权威的信息源.它包含你所存储数 ...
- Django 学习笔记之四 QuerySet常用方法
QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...
- Django学习笔记(三)—— 型号 model
疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...
- Django入门笔记
Django入门笔记 **文档包含Django安装包.学习的笔记.代码等 安装 Django参考附件,只需要把附件拷贝到你需要的目录就行.Django是1.8.16版本 Python:在附件中,其中有 ...
- Django学习笔记(9)—— 开发用户注册与登录系统
一,项目题目: 开发用户注册与登录系统 该项目主要练习使用Django开发一个用户注册与登录的系统,通过这个项目然后巩固自己这段时间所学习的Django知识. 二,项目需求: 开发一个简单的用户登录与 ...
- Django学习笔记(4)——Django连接数据库
前言 在MVC或者MTV设计模式中,模型(M)代表对数据库的操作.那么如何操作数据库呢?本小节就认真学习一下.首先复习一下Django的整个实现流程 ,然后再实现一下使用数据库的整个流程,最后学习一下 ...
- Django学习笔记二
Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...
随机推荐
- Python3爬虫:(一)爬取拉勾网公司列表
人生苦短,我用Python 爬取原因:了解一下Python工程师在北上广等大中城市的薪资水平与入职前要求. Python3基础知识 requests,pyquery,openpyxl库的使用 爬取前的 ...
- 5.7之sql_model
问题发生背景 今天在部署项目的时候发现,测试后台接口,直接报 500,仔细一看原来是操作数据库的时候报错了,在本地测试的时候是没遇到类似的问题,数据库的版本是一样的,后面查找资料,说是 MySQL 5 ...
- Java版飞机订票系统
关注微信公众号:Worldhello 回复 飞机订票系统 可获得系统源代码并可加群讨论交流 数据结构课程设计题目: [飞机订票系统] 通过此系统可以实现如下功能 ...
- Python——6切片
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- iMX287A开发环境搭建
目录 1.开发套件简介 2.说明: 3.主机搭建交叉编译环境 4.编译第一个ARM Linux程序--Hello World 5.开发板运行U盘中的可执行文件 6.配置交叉编译工具到环境变量 7.sc ...
- Java面试必问之Hashmap底层实现原理(JDK1.7)
1. 前言 Hashmap可以说是Java面试必问的,一般的面试题会问: Hashmap有哪些特性? Hashmap底层实现原理(get\put\resize) Hashmap怎么解决hash冲突? ...
- layer打开弹窗时传递参数(content:)
在使用layer打开弹窗时,我希望带一些参数过去,进行某些判断.直接就可以用链接+参数的方式即可. js var userGrade=Mrant layer.open({ title: '权限管理', ...
- [每日一题系列] LeetCode 1013. 将数组分成和相等的三个部分
题目: 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + . ...
- API服务版本控制 Microsoft.AspNetCore.Mvc.Versioning
我们在进行webapi服务开发时,会遇到一些多个版本的api共存的情况发生,例如某一版本APP上线后,需求发生变更,需要在下一个升级版本更新API,但同时又需要保证这个APP版本能正常使用,这时候就需 ...
- java面试汇总一
第一部分 Java SE基础(1) 1.1 java的8种基本数据类型 装箱 拆箱 1.1.1 8种基本的数据类型 1.1.2装箱 拆箱 自动装箱是 Java 编译器在基本数据类型和对应的对象包 ...