测试开发进阶(二十二)
欢迎关注我的公众号「测试游记」
在projects/models.py
中编写
1 | from django.db import models |
- 每个应用下的数据库模型类,需要在当前应用下的models.py文件中定义
- 一个数据库模型类相当于一个数据表(Table)
- 一个数据库模型类需要基础Model或者其子类
- 定义的一个类属性,就相当于数据库表中的一个字段(
first_name
,last_name
)- 默认会创建一个自动递增的id主键
- 默认创建的数据库名为:应用名小写_数据库模型类小写
修改数据库远程连接权限
1 | GRANT ALL PRIVILEGES ON * . * TO '你的用户名'@'%' IDENTIFIED BY '你的密码'; |
我这边使用
1 | GRANT ALL PRIVILEGES ON * . * TO 'my_django'@'%' IDENTIFIED BY '123456'; |
刷新数据库
1 | flush privileges; |
迁移
1 | makemigrations projects |
迁移结果查看
字段
max_length
最大长度unique
设置当前参数唯一verbose_name
设置人性化的字段名help_text
用于API文档中的中文名null
允许为空black
设置前端可以不传递default
设置默认值
1 | class Projects(models.Model): |
查看新表
查看表设计
修改数据表名称
在Projects
类中添加
db_table
表名verbose_name
:在admin站点中人性化展示verbose_name_plural
:复数显示(对照英文在单词后面+s)
1 | class Meta: |
再次迁移
1 | makemigrations projects |
迁移前:
迁移后(点击刷新):
后台站点
注册站点
projects/admin.py
1 | from django.contrib import admin |
全部迁移
1 | makemigrations |
访问admin
http://127.0.0.1:8000/admin
创建管理员账户
1 | createsuperuser |
让图中的Persons
变为中文:修改projects.models.Person
保存后刷新页面
1 | class Person(models.Model): |
添加一个项目:
查看数据表
为了让他显示的更人性化在projects.models.Projects
中添加:
1 | def __str__(self): |
修改展示的部分
fields
指定在修改「新增」中需要显示的字段list_display
指定要列出的字段
1 | from django.contrib import admin |
表关联
创建一个应用
1 | startapp interfaces |
注册子应用
1 | INSTALLED_APPS = [ |
在interfaces/models.py
中编写
**一个项目中有多个接口 那么需要在「多」的一侧创建外键 **
项目表为父表「一」,接口表为「多」子表
1 | class Interfaces(models.Model): |
对于:
1 | project = models.ForeignKey('projects.Projects', on_delete=models.CASCADE, verbose_name='所属项目', help_text='所属项目') |
第一个参数
字符串
:关联的模型路径或者模型类「应用名.模型类」 -> ‘projects.Projects’对象
:import导入from projects.models import Projects -> Projects
第二个参数
设置的是:当父表删除之后,该字段的处理方式
models.CASCADE
:子表也会被删除models.SET_NULL
:当前外键会被设置为Nonemodels.PROTECT
:会报错models.SET_DEFAULT
:设置默认值,同时需要指定默认值,null=True
数据库操作
使用Pycharm自带的Python Console
就可以进入Django的shell模式
使用python manage.py shell
也可以进入
1 | from projects.models import Projects |
查看数据库操作记录
1 | from django.db import connection |
增
1 | one_obj = Projects(name='「测试游记」-创建', leader='zx_94', tester='zx', programer='zx', publish_app='公众号', desc='666') |
数据库操作记录
1 | print(connection.queries[-1]) |