一、创建表
from django.db import models
class Department(models.Model):
# 括号参数固定models.Model
""" 部门表 """
# 参数一是最大长度(此处的varchar类型),参数二还不懂,好像是类似于注释
Title = models.CharField(max_length=16, verbose_name="标题")
class UserInfo(models.Model):
""" 员工表 """
user_name = models.CharField(verbose_name="姓名", max_length=32)
password = models.CharField(verbose_name="密码", max_length=32)
age = models.IntegerField(verbose_name="年龄") # 整数
account = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0)
# 10位的实数,其中2位小数? 默认值是0
create_time = models.DateTimeField(verbose_name="入职时间")
# 此处考虑到:
# 员工表的部门id与部门表关联:to--与哪个表关联,to_field--与表中的哪个字段关联
# 这里是级联删除(参数三):如果部门表的某条数据被删除(某个部门),该部门的员工数据在员工表中也会被删除
department_id = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE)
# 关于约束,除了级联删除处理,还可以置空
# department_id = models.ForeignKey(to="Department", to_field="id", null=True, blank=True, on_delete=models.SET_NULL)
# django中的约束,性别只能写入1 or 2
gender_choices = (
(1, "男")
(2, "女")
)
gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)
# Create your models here.
二、生成表
1.先创建对应数据库
2.配置文件
因为django中默认使用sqlite3,这里要更改
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname', #数据库名称
'USER': 'root', #用户名
'PASSWORD': 'xxx', #密码
'HOST': '', #locahost或者是127.0.0.1
'PORT': '', #一般是3306
}
}
[这里参考武佩奇老师教程]:(Python之路【第十六篇】:Django【基础篇】 - 武沛齐 - 博客园 (cnblogs.com))
3.建表
3.1 通过两行命令
python manage.py makemigrations
python manage.py migrate
这里是由于django有很多默认的表需要一并创建,如下图:
同时注意这里的表名,是注册的app名称(app01) + 下划线 + 类名(userinfo/department)