从零学Django———视频学习(四)

194 阅读1分钟

一、创建表

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

image.png

python manage.py migrate

image.png 这里是由于django有很多默认的表需要一并创建,如下图:

image.png

同时注意这里的表名,是注册的app名称(app01) + 下划线 + 类名(userinfo/department)