Django orm使用教程
Posted guanzhicheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django orm使用教程相关的知识,希望对你有一定的参考价值。
Django orm使用教程
标签(空格分隔): Django orm
前言
orm使用五步走:
- 在settings文件中设置数据库连接配置
- 创建app
- 在models里面创建类
- 使用
python make migrations
命令将改变登记在小本本上面 - 使用
python migrate
命令将改动同步到数据库中
数值类型(常用)
- CharField varchar类型:
name = models.CharField(max_length=32)
- IntegerField
int类型:age = models.IntegerField()
- DecimalField
decimal类型:money = models.DecimalField(max_digits=5,decimal_places=2,default=9.9)
- DateField
Date类型:publish_date = models.DateField(auto_now_add=True)
- AutoField 一般用于id字段实现id字段的自增属性,在Django的orm中可以不用加id字段,orm在创建表的时候会自动将该字段添加到表中
实现ENUM数据类型的方式:
gender_choice=((1,‘男‘),(2,‘女‘)) gender = models.SmallIntegerField(choices=gender_choice,default=1)
表的三种关系
1.多对一:使用外键关联:ForeignKey
2.多对多:使用一张新的表:在 orm中可以直接使用ManyToManyField创建
3.一对一:在外键的基础上增加unique属性
orm之增删改
- create():创建一个新对象,并保存对象
import datetime
models.author.objects.first().book_set.create(title=‘番茄物语‘)
- add():把指定的model对象添加到关联对象集中
author_objs = models.author.objects.filter(id__lt=3)
models.book.objects.first().author.add(*author_objs)
-set():更新model对象的关联对象
book_obj = models.book.objects.first()
book_obj.authors.set([2,3])
-remove():从关联对象集中移除执行的model对象
book_obj = models.book.objects.first()
book_obj.authors.remove(3)
-clear():从关联对象集中移除一切对象
book_obj = models.book.objects.first()
book_obj.authors.clear()
必知必会13条
- all(): 查询所有结果
- filter(**kwargs) 包含了与所筛选条件相匹配的对象
- get(**kwargs) 返回与所筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误
- exclude(**kwargs) 返回与筛选条件不匹配的对象
- values(*field) 返回一个ValueQuerySet,运行后得到的并不是一系列model的实例化对象,得到的而是一个可迭代字典对象
- values_list(*field) 与values()非常相似,它返回的是一个元祖序列,而values()返回的是一个字典序列
- order_by(*field) 查询结果排序
- revers() 对查询结果反向排序,reverse()通常只能在具有已定义序列顺序的QuerySet上调用
- distinct() 从返回结果中剔除重复记录
- 返回数据库中匹配查询(QuerySet)的对象数量
- first() 返回第一条记录
- last() 返回最后一条记录
- exists() 如果QuerySet包含数据,就返回True,否则返回False
以上是关于Django orm使用教程的主要内容,如果未能解决你的问题,请参考以下文章