在 projects/models.py中编写
from django.db import models
class Person(models.Model):
"""
创建Person类
"""
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)first_name, last_name)GRANT ALL PRIVILEGES ON * . * TO '你的用户名'@'%' IDENTIFIED BY '你的密码';我这边使用
GRANT ALL PRIVILEGES ON * . * TO 'my_django'@'%' IDENTIFIED BY '123456';刷新数据库
flush privileges;$ makemigrations projects
$ migrate projects迁移结果查看
max_length 最大长度unique 设置当前参数唯一verbose_name 设置人性化的字段名help_text 用于API文档中的中文名null 允许为空black 设置前端可以不传递default 设置默认值class Projects(models.Model):
"""
创建Projects模型类
"""
name = models.CharField(verbose_name='项目名称', max_length=200, unique=True, help_text='项目名称')
leader = models.CharField(verbose_name='负责人', max_length=50, help_text='负责人')
tester = models.CharField(verbose_name='测试人员', max_length=50, help_text='测试人员')
programer = models.CharField(verbose_name='开发人员', max_length=50, help_text='开发人员')
publish_app = models.CharField(verbose_name='发布应用', max_length=50, help_text='发布应用')
desc = models.TextField(verbose_name='简要描述', help_text='简要描述', blank=True, default='', null=True)在 Projects类中添加
db_table表名verbose_name:在admin站点中人性化展示verbose_name_plural:复数显示(对照英文在单词后面+s)class Meta:
db_table = 'tb_projects'
verbose_name = '项目'
verbose_name_plural = '项目'再次迁移
$ makemigrations projects
$ migrate projects注册站点
projects/admin.py
from django.contrib import admin
from .models import Projects, Person
admin.site.register(Projects)
admin.site.register(Person)全部迁移
$ makemigrations
$ migratehttp://127.0.0.1:8000/admin
$ createsuperuser让图中的 Persons变为中文:修改 projects.models.Person保存后刷新页面
class Person(models.Model):
"""
创建Person类
"""
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class Meta:
verbose_name = '人'
verbose_name_plural = '人们'添加一个项目:
查看数据表
为了让他显示的更人性化在 projects.models.Projects中添加:
def __str__(self):
return self.namefields 指定在修改「新增」中需要显示的字段list_display 指定要列出的字段from django.contrib import admin
from .models import Projects, Person
class ProjectsAdmin(admin.ModelAdmin):
"""
定制后台管理站点类
"""
fields = ('name', 'leader', 'tester', 'programer', 'publish_app', 'desc')
list_display = ['id', 'name', 'leader', 'tester']
admin.site.register(Projects, ProjectsAdmin)
admin.site.register(Person)$ startapp interfacesINSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'projects.apps.ProjectsConfig',
'interfaces.apps.InterfacesConfig',
]在 interfaces/models.py中编写
*一个项目中有多个接口 那么需要在「多」的一侧创建外键 *
项目表为父表「一」,接口表为「多」子表
class Interfaces(models.Model):
name = models.CharField(verbose_name='项目名称', max_length=200, unique=True, help_text='项目名称')
tester = models.CharField(verbose_name='测试人员', max_length=50, help_text='测试人员')
desc = models.TextField(verbose_name='简要描述', help_text='简要描述', blank=True, default='', null=True)
project = models.ForeignKey('projects.Projects', on_delete=models.CASCADE, verbose_name='所属项目', help_text='所属项目')
class Meta():
verbose_name = 'a'对于:
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自带的 PythonConsole就可以进入Django的shell模式
使用 python manage.py shell也可以进入
from projects.models import Projects
Projects.objects.all()
Out[3]: <QuerySet [<Projects: 测试游记>, <Projects: 测试游记1>]>
Projects.objects.get(id=1)
Out[4]: <Projects: 测试游记>
Projects.objects.get(id=1).name
Out[5]: '测试游记'
Projects.objects.get(id=1).tester
Out[6]: 'zx'from django.db import connection
print(connection.queries)one_obj = Projects(name='「测试游记」-创建', leader='zx_94', tester='zx', programer='zx', publish_app='公众号', desc='666')
one_obj.save()数据库操作记录
print(connection.queries[-1])
{'sql': "INSERT INTO `tb_projects` (`name`, `leader`, `tester`, `programer`, `publish_app`, `desc`) VALUES ('「测试游记」-创建', 'zx_94', 'zx', 'zx', '公众号', '666')", 'time': '0.003'}