IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 关于Django模型的全部大纲,听了一天的课做的笔记 -> 正文阅读

[Python知识库]关于Django模型的全部大纲,听了一天的课做的笔记

Django关于模型的全部大纲(学习笔记)

看看我做了一天的笔记,学习能说累吗

# 字段模型***************************************************************************************
models.AutoField()  # 根据实际id自动增长的字段
models.CharField(max_length=字符长度)  # 字符串
models.TextField()  # 大文本
models.IntegerField()  # 整数
models.DecimalField(max_digits=None, decimal_plaves=None)  #小数 max_digits位数总数,dicimal_places小数点后的位数
models.FloatField()  # python的float实例来表示浮点数
models.BooleanField()  # true/false字段,默认表单控制是CheckboxInput
models.NullBooleanField()  # 支持null,true,false
# 下面三个的参数是一样的,三个关于时间的字段
models.DateField(auto_now=False, auto_now_add=False)  # 日期,auto_now:每当对象被修改自动设置该字段为当前时间,														  # auto_now_add:当对象地第一次被创建时,自动设置为当前时间
models.TimeField()  # 时间
models.DateTimeField()  # 日期+时间
# 
models.FileField()
models.ImageField()


# 字段选项***************************************************************************************
null = True  # True时将空值以null存储,默认是False,一般不用写,是数据库的范畴
blanke = True  # True时,该字段允许为空白,默认值是False,是表单验证的范畴
db_column  # 字段的名称,如果未指定,则使用属性名
db_index  # 若为True,则在表中会以此字段创建索引
default  # 默认值
primary_key  # 为True则该字段成为模型主键
unique  # 如果为True,则该字段在表中必须有唯一值


# 关系***************************************************************************************
ForeignKey  # 一对多
ManyToManyField  # 多对多,不常用
OneToOneField  # 一对一,不常用


# 元选项***************************************************************************************
# 在模型类中定义的一个Meta类,用于设置原信息
class Meta:
    db_table="自定义的表名"  # 自定义表名
    ordering=['id']  # 对象的默认排序字段,ordering=["id"]为升序,ordering=["-id"]为降序,注意排序会增加数据库开销
    
    
# 模型成员***************************************************************************************
# 类属性:objects 是Manager类型的一个对象,作用是与数据库进行交互
# 当定义模型没有指定管理器,则Django为模型创建一个管理器objects
# 可以自定义管理器 stuObj = models.Manager(),当自行指定了一个模型管理器,Django不在生成objects
# 模型管理器作用:可以向管理器类中添加额外的方法,
# 修改管理器返回的集合(原始查询集)==>重写get_queryset()
class StudentManager(models.Manager):
    def get_queryset(self):
        return super(StudentManager, self).set_queryset().filter(isDelete=False)
class Stuednt(models.Model):
    studentManager = StudentManager()  # 自己定义和修改的manager
    studentManager2 = models.Manager()  # 普通Manager,与obects 等效
    
# 创建对象***************************************************************************************
# 目的,向数据库中添加数据
# 当创建对象的时候,Django不会对数据库进行读写操作,调用save()时才与数据库交互,将对象保存到数据库
# 注意:__init__方法已经在父类models.Model中使用,在自定义的模型中无法使用


# 模型查询***************************************************************************************
# 查询集,表示从数据库里获取的对象集合
# 查询集可以有多个过滤器,过滤器就是一个函数,基于我们的参数限制查询结果
# 从sql角度来说,查询集会被映射成select语句,就像where条件

# 1.在管理器上的方法调用查询集
# 2.查询集经过过滤器筛选后返回查询集,所以可以写成链式调用
# 3.惰性执行:创建查询集不会创建数据库的访问,直到调用数据的时候才会访问数据

# 4.直接访问数据的情况也有:
# 4.1.迭代
# 4.2.序列化
# 4.3.if合用

# 5.过滤器,返回查询集的方法称为过滤器
# 5.1. all()
# 5.2. filter(=值,键=)	filter(=).filter(=)
# 5.3. exclude()过滤掉符合条件的数据,不常用
# 5.4. order_by()排序,不常用
# 5.5. values()一条数据就是一个字典,返回一个列表,和all()的区别在于返回的数据类似于json的列表

# 5.6. 返回的单个数据
# 5.6.1. get()返回一个满足条件的对象,
# 如果没有找到符合条件的对象,会引发一个DoesNotExist异常
# 如果找到多个对象,会引发MultipleObjectReturned异常
# 异常用try except捕获屏蔽
# 5.6.2. count()返回查询集对象个数
# 5.6.3. first()返回查询集第一个对象
# 5.6.4. last()返回最后一个数据
# 5.6.5. exists()判断查询集中是否有数据,True,False

# 6. 限制查询集[n,m],相当于limit start,count 的SQL语句
# 7. 查询集缓存,每个查询集都会包含一个缓存用来最小化数据库访问
# 第一次查询后Django会形成缓存

# 8. 字段查询,实现了sql中的where语句,作为方法filter(),exclude(),get()的参数
# 语法:属性名称__比较运算符=值
# 外键:属性名_id
# 转义:like语句中的%是为了匹配占位
# 8.1. exact:判断,大小写敏感,通常用=就可以了
# 8.2. contains:是否包含,写法根据语法规则为:sname__contains = "sun"
# 8.3. startswith、endswith:以某某开头或结尾
# 以上4种参数如果在参数前多一个‘i’就大小写不敏感,iexact,icontains,istartwith,iendswith
# 8.4. isnull,isnotnull是否为空
# 8.5. in 包含,写法:pk__in=[2.4.6.8]
# 8.6. gt大于 gte大于等于 lt小于 lte小于等于
# 8.7. 日期的几个:year,month,day,week_day,hour,minute,second,写法:lastTime__year=2017

# 8.8. 跨关联查询:处理join查询
# 语法:模型类名__属性名__比较运算符

# 8.9. 查询快键:pk 主键
# 9. 聚合函数
# 9.1. aggregate()函数返回聚合函数的值  Students.objects.aggregate(Max("sage"))  # 与下面几个配合使用
# 9.2. Avg()
# 9.3. Max()
# 9.4. Min()
# 9.5. Count()
# 9.6. Sum()

# 10. F对象
# 可以使用模型的A属性和B属性进行比较
from django.db.models import F,Q
def grades(request):
    g= Grades.objects.filter(ggirlnum__gt = F("gboynum"))
    print(g)
    return HttpResponse("ahsgdfjhagsf")

# 并且支持F对象的算术处理:F("字段")+20

# 11. Q对象
# 如果要使用or查询,需要使用Q对象,一般的过滤器方法中的关键字参数为And模式
stuList = Students.objects.filter(Q(pk__lt = 3) | Q(sage__gt = 50))
# Q对象前的~为取反,写法~Q(sage__lt=20)
# 如果只有一个对象,就是用于匹配的,跟没有Q是等效的

有用的话点个赞吧,是吧

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:02:00  更:2021-09-27 14:04:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:36:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码