模型( Model ),就是 Python 中的类对应数据库中的表

ORM

ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是”对象-关系映射”( Object/Relational Mapping ) 的缩写

  1. from django.db import models
  2. class Question(models, Model):
  3. question_text = models.CharField(max_length=200)
  4. pub_date = models.DateTimeField()
  1. CREATE TABLE IF NOT EXSITS `polls_queston` (
  2. `id` INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL ,
  3. `question_text` VARCHAR(200) NOT NULL ,
  4. `pub_date` DATETIME(6) NOT NULL
  5. )
  • 模型类必须继承 models.Model
  • 每个属性对应数据库中的一个字段
  • 表名自动使用 mysite_类型 的小写( 如: polls_question ),可以覆盖
  • 如果模型类中没有指定 PRIMARY KEY,那么会自动创建一个 id 字段,自增且是主键

类生成表

通过在 model 文件中创建一个类,然后通过数据库迁移方式在数据库中生成表

准备工作

  1. INSTALLED_APPS = [
  2. '应用名' -- 添加应用名
  3. ]
  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.[数据库]', -- 修改成使用的数据库,如 mysql
  4. 'NAME': '[应用名]',
  5. 'HOST': 'IP', -- 添加主机、用户和密码
  6. 'USER': '[用户名]',
  7. 'PASSWORD': '[密码]',
  8. 'PORT': 端口 -- 端口没有引号
  9. }
  10. }

需提前安装好数据库驱动,如 Mysql 安装好 pymysql

预备迁移

  1. python manage.py makemigrations [应用名]
  • 如果不指定应用名,那么会对 settings 文件里的所有 INSTALLED_APPS 中的应用都进行预备迁移
  • 指定应用名,会在对应的应用下的 migrations 文件中生成一个对应的迁移文件

正式迁移

  1. python manage.py migrate [应用名]
  • 如果不指定应用名,那么会把 Django 项目中的所有应用都迁移到数据库中

表生成类

  • settings 中设置好 DATABASES配置
  • 在数据库中建立好表、约束和表关系等
  • 运行生成命令后,在 models 中查看生成的模型类
    1. python manage.py inspectdb > 应用名/model.py