一、常用的查询

常用的查询方法(注:User为app项目):

获取所有的记录: rs = User.objects.all()

获取第一条数据:rs = User.objects.first()

获取最后一条数据:rs = User.objects.last()

根据参数提供的条件获取过滤后的记录:rs = User.objects.filter(name=‘xiaoming’)

注意:filter(**kwargs)方法:根据参数提供的提取条件,获取一个过滤后的QuerySet。

排除name为xiaoming的记录:rs = User.objects.exclude(name='xiaoming')

获取一个记录对象:rs = User.objects.get(name='xiaoming')

注意:get返回的对象具有唯一性质,如果符合条件的对象有多个,则get报错!

对结果排序order_by:  rs = User.objects.order_by('age')

对多对象排序:rs = User.objects.oeder_by('age', 'id')

逆向排序:rs = User.objects.oeder_by('-age')

将返回来的QuerySet中的model转换为字典:rs = User.objects.all().values()

获取当前查询到的数据的总数:rs = User.objects.count()

常用的查询条件:

注:查找对象的条件的意思是传给以下方法的一些参数。相当于是SQL语句中的where语句后面的条件,语法为字段名__规则(是连着两个下划线)

exact 相当于等于号: rs = User.objects.filter(name__exact='xiaoming'), iexact:跟exact,只是忽略大小写的匹配;

contains包含:rs = User.objects.filter(name__contains='xiao'), icontains跟contains,唯一不同是忽略大小写。

startwith 以什么开始: rs = User.objects.filter(name__startwith='xiao'), isstartwith:同startwith,忽略大小写。

endwith  以什么结尾:rs = User.objects.filter(name__endwith='xiao'),isendwith:同endwith,忽略大小写。

in 成员所属: rs = User.objects.filter(age__in=[18,19,20])

gt 大于:rs = User.objects.filter(age__gt=20)

gte大于等于:rs = User.objects.filter(age__gte=20)

lt 小于: rs = User.objects.filter(age__lt=20)

lte小于等于:rs = User.objects.filter(age__lte=20)

range区间:rs = User.objects.filter)age__range=(18,20))

isnull 判断是否为空:rs = User.objects.filter(city__isnull=True)

二、常用的模型字段类型

常用的字段类型映射关系:

int---------->IntegerField

varchar--->CharField

longtext--->TextField

date-------->DateField

datetime--->DateTimeField

常用的字段类型:

IntegerField:整型,映射到数据库中的int类型;

CharField:字符类型,映射到数据库中的varchar类型,通过max_length指定最大长度;

TextField:文本类型,映射到数据库中的text类型;

BooleanField:布尔类型,映射到数据库中的tinyint类型,在使用的时候,传递True/False进去,如果要可以为空,则用NullBooleanField;

DateField:日期类型,没有时间。映射到数据库中是date类型,在使用的时候,可以设置DateFiled.auto_now每次保存对象时,自动设置该字段为当前时间。设置DateField.auto_now_add当对象第一次被创建时自动设置当前时间;

DateTimeField:日期时间类型。映射到数据库中的是datetime类型,在使用的时候,传递datetime.datetime()进去。

三、Field的常用参数

primary_key:制定是否为主键;

unique:指定是否唯一;

null:指定是否为空,默认为False;

blank:等于True时form表单验证时可以为空,默认为False;

default:设置默认值。

DateField.auto_now:每次修改都会将当前时间更新进去,只有调用,QuerySet.update方法将不会调用。这个参数只是Date和DateTime以及TimModel.save()方法才会调用e类才有的。DateField.auto_now_add:第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值。

创建模型类:

app目录下的models.py文件中,创建模型所需要的数据,并定义其Field参数

 app目录下的views.py文件中,创建输入对应数据

四、表关系的实现

表关系的实现:

  数据库层面 模型类层面
一对多 外键

ForeignKeyField

一对一 外键+唯一键 OneToOneField
多对多 关联表:外键+联合唯一 ManyToManyField

表关系图:

表关系的例子:

学院信息表 一对多 学生信息表
学生信息表 一对一 学生详细信息表
课程表 多对多 学生信息表

创建模型类:

1007.Django模型基础02的更多相关文章

  1. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

  2. Django 07 Django模型基础2 (常用查询和多表关联)

    Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...

  3. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  4. 六、Django模型基础第一节

    1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...

  5. Django 学习第六天——Django模型基础第一节

    一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...

  6. 九.django模型基础(三)之关联对象操作及多表查询

    Ⅰ.关系表的数据操作 1.正向 正向:如果一个模型有外键字段,通过这个模型对外键进行操作叫做正向. 1)更新(增) a.通过属性复制 b.通过主键的方式 总结: ForeignKey 字段的更新,跟普 ...

  7. 七、Django模型基础第二节——常用查询

    1 常用的模型字段类型 官方文档链接: https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 常用的字段类型 模型字 ...

  8. django模型基础(三)

    本文转载自https://blog.csdn.net/xiaogeldx/article/details/88084034 表关系 一对一(OneToOne) 通过本表的主键外键关联另一张表的主键 创 ...

  9. Django 学习第八天——Django模型基础第三节

    一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...

  10. Django 学习第七天——Django模型基础第二节

    User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...

随机推荐

  1. SICP 笔记:环境配置

    SICP 笔记:环境配置 记录学习<算机的程序的构造和解释>的笔记. 环境配置 SICP 里面使用的语言是一种 Lisp 的变体 Scheme. 使用 DrRacket 作为 IDE 来进 ...

  2. protobuf笔记

    protobuf的enum .proto的enum类型在编译后,是C++的enum

  3. windows 服务 包装模板

    github地址:  https://github.com/xl711436/Xiaolei.MockService 在 MockServiceInstance.cs 中 对应的方法中添加 对应的逻辑 ...

  4. CICD中一个巨头--jenkins

    持续化集成,发布离不开CICD,CICD中有最重要的一个程序就是jenkins,本章主要讲jenkins部署和建立项目任务 jenkins的出现,大大的提高了代码上线问题,通过图中可以看出,开发人员通 ...

  5. 利用position: absolute最简便实现水平居中的css样式

    html <div class="horizontal-center"></div> css .horizontal-center { left: 50%; ...

  6. 个人js基础知识及看js高级程序设计查漏 汇总

    1.事件循环机制 js单线程操作. 1>主线程读取js代码 ,此时为同步环境,形成相应的堆和执行栈. 2>主线程遇到异步任务,指给对应的异步进程处理. 3>异步进程处理完毕后,将相应 ...

  7. Coursera Programming Languages, Part B 华盛顿大学 Week 1

    来上 programming language 的第二 part 了!这一部分介绍的语言是 Racket,之前就听说过它独特的括号语法,这次来具体了解一下 Racket definitions, fu ...

  8. 用Python中的hashlib实现md5和sha加密

    文章目录 一.用 pandas 读取 Excel 数据 二.加密库 hashlib 三. pandas中的 map() 方法 四.数据加密工具 本文分享知识: pandas读取Excel数据 read ...

  9. c语言中的原子操作

    参考文章:https://blog.csdn.net/yikai2009/article/details/8650221 1. 原子操作:原子操作指的是在执行过程中不会被别的代码所中断的操作..分为 ...

  10. 微信小程序——计算器

    知识点: wxml: hover-class: 实现点击态效果 hover-class样式显示的原理是 点击时把样式加到class的样式中,冲突时,谁在后面就显示谁! data-val: 用于传数据, ...