前面介绍了项目的创建,本节开始讲述创建数据表模型。
二、数据表模型
1.用Pycharm打开studentManageSystem, 编辑studnetmanage中的models.py,创建所需的类信息
from django.db import models
# Create your models here.
# 班级信息表类
class Classes(models.Model):
title = models.CharField(max_length=32)
teacher = models.ManyToManyField("Teachers")
# 学生信息表类
class Student(models.Model):
stu_id = models.CharField(max_length=10, verbose_name='学号')
stu_name = models.CharField(max_length=32,verbose_name='学生姓名')
stu_gender = models.BooleanField()
stu_phone = models.CharField(max_length=20,verbose_name='学生电话')
# stu_addr = models.CharField(max_length=100, verbose_name='学生地址')
stu_addr = models.CharField(verbose_name='学生地址')
stu_cs = models.ForeignKey('classes', on_delete=models.CASCADE)
class Meta():
db_table = 'studentinformation'
# 教师信息表类
class Teachers(models.Model):
TeacherName = models.CharField(max_length=32)
2.在setting.py中,将之前创建的应用注册
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'studentmanage', # 注册创建的studenmanage应用 如果没有这个 创建数据库会报NO changes 错误
]
3.配置数据库
在setting.py中,修改DATABASE部分的内容
# 数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定用什么数据库
'NAME': 'studentmanage', # 指定数据库名
'USER': 'root', # 数据库账号,默认为root,如果你修改了,要记得修改为你的数据库账号
'PASSWORD': 'mysql', # 数据库密码,要注意修改为你的数据库密码
'HOST': 'localhost', # 数据库IP 本机用localhost
'PORT': 3306, # 端口
}
}
因为使用mysql数据库,在项目中引用pymysql
在项目名称的init.py中修改,本列中为:studentManageSystem/init.py
import pymysql
pymysql.install_as_MySQLdb()
4.测试数据库
(1)在mysql中创建数据库studentmanage.(查看windows平台中mysql命令汇总(记录,方便自己,不断更新中)
create database studentmanage charset=utf8;
show databases;后可以看到创建的数据库。
(2)生成迁移文件:根据模型类型生成sql语句
提示有如下错误
修改init.py,指定pymysql的版本
import pymysql pymysql.version_info = (1, 4, 13, "final", 0) pymysql.install_as_MySQLdb()
又有错误,根据提示修改(原因: CharField() 字符型字段,默认的表单窗口部件是TextInput。该字段类型有一个必需参数:max_length 在数据库水平限定了字符串最大长度。)
D:\PythonWeb\studentManageSystem>manage.py makemigrations
Migrations for 'studentmanage':
studentmanage\migrations\0001_initial.py
- Create model Classes
- Create model Teachers
- Create model Student
- Add field teacher to classes
说明迁移生成模型成功,执行迁移
D:\PythonWeb\studentManageSystem>manage.py migrate
在mysql命令状态下,查看生成的数据表。
mysql> use studentmanage
Database changed
mysql> show tables;
+----------------------------+
| Tables_in_studentmanage |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| classesinfomation |
| classesinfomation_teacher |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| studentinformation |
| teachersinfomation |
+----------------------------+
14 rows in set (0.00 sec)
mysql>