ORM模型介绍
模型配置
default:默认数据库
ENGINE:数据库引擎
NAME:数据库名称
USER:数据库登陆用户名
PASSWORD:数据库登陆密码
HOST:数据库访问地址
PORT:端口号
Django使用mysql数据库时需安装依赖:pip install mysqlclient
ORM字段类型
Django ORM模型中提供的常用字段:
对于CharField,max_length为必选参数
对于DateTimeField:
auto_now:更新时间为记录更改的时间
auto_now_add:记录创建的时间
类型的选项(可选参数)
每个类型都有可选参数,部分类型有必传参数。
一般情况下,第一个参数不指定名称。
1.(大多数模型类型的第一个参数)verbose_name:表示字段的含义
2.null,blank:是否为Null,空值(空字符串)
3.db.column:数据库表中对应的字段名称
4.default:不填写字段值时的默认值
5.primary_key,unique:主键,唯一索引
6.help_text:帮助文字
7.choices:可供选择的选项(get_xxx_display():展示choices对应的值)
模型同步
1.检查模型是否编写无误
python manage.py check
2.生成同步原语
python manage.py makemigrations
3.执行同步
python manage.py migrate
模型的元数据
元数据:在模型里再写一个类(Meta)
作用:对模型的补充说明
db_table:模型映射的数据库表的名称
ordering:指定数据表的默认排序规则
verbose_name:供编程查看的字段名称
abstract:True,抽象类,不会生成数据库表
proxy:代理模型(代理父模型的功能,并对父模型功能进行扩充)
外键关联关系
- 一对一关系: OneToOneField(to,on_delete,parent_link=False,**options)
- 一对多关系: ForeignKey(to,on_delete,**options)
- 多对多关系: ManyToManyField(to,**options)
参数:
to:关联的模型(必传)
- 模型类
- 模型类(字符串)
- self(外键关联的是自己的情况)
on_delete:删除选项(必传)
- CASCADE:关联删除
- PROTECT:受保护,不允许被删除
- SET_NULL:设置为null,需要添加选项null=True
- SET_DEFAULT:设置默认值,需要添加选项default
- SET():传参设置值
- DO_NOTHING:什么都不做
related_name:是否需要反向引用,反向引用的名称
related_query_name:反向引用的名称
复合类型
Django自带模型(类容模型):ContentType
它会将创建的模块和定义的模型都记录下来
通过外键ForeignKey(ContentType)关联复合模型。
GenericForeignKey关联模型
GenericRelation反向关联
ORM实现CRUD
使用ORM新增数据
Django shell:
1.从终端进入项目目录下,python manage.py shell
2.从pycharm进入[Python Console]
首先需要引入写好的模型
1.save():保存数据
2.create():新增数据
3.bulk_create():批量新增数据
save()保存数据
user_obj = User(username=‘admin’,password=‘123’)
user_obj.save()
create()新增数据
user_obj = User.objects.create(username=‘admin’,password=‘123’)
bulk_create()批量新增数据
user1 = User(username=‘admin’,password=‘123’)
user2 =User(username=‘normal’,password=‘123’)
user3 = …user_list = [user1,user2,user3,…]
User.objects.bulk_create(user_list)
外键关联数据的插入
user1 = User(username=‘admin’,password=‘123’)
LoginHistory.objects.create(user=user1, *args, **kwargs)
注:需要传入外键关联的对象或是对象id
使用ORM简单查询
- get(**kwargs)
- latest(*fields)/e