当前位置 : 主页 > 网络编程 > 其它编程 >

说说PythonDjango模型的创建流程

来源:互联网 收集:自由互联 发布时间:2023-07-02
模型指的是真实世界对象的明确描述。它包含所需要的数据字段和行为。Django遵循DRYPrinciple:明确优于隐式–行为基于关键字参数,并且在某些 模型指的是真实世界对象的明确描述。它
模型指的是真实世界对象的明确描述。它包含所需要的数据字段和行为。Django遵循DRYPrinciple:明确优于隐式–行为基于关键字参数,并且在某些

模型指的是真实世界对象的明确描述。它包含所需要的数据字段和行为。Django 遵循 DRY Principle :

  • 明确优于隐式 – 行为基于关键字参数,并且在某些情况下,基于字段的类型。
  • 包括所有相关领域逻辑 – 模型应该封装一个“对象”的各个方面,遵循 Martin Fowler 的 Active Record 设计模式,所有可用于理解该模型的信息都应该存储在该模型中。
  • Active Record 设计模式

    说说 Python Django 模型的创建流程

    比如这个 Person 对象,包含数据与行为,其内部定义了与数据库的交互行为。多个 Person 对象会以记录的形式,存储在数据库中。

    1 定义模型

    假设我们定义好了一个 app,名叫 chart。

    之后,我们就可以在 chart/models.py 中,定义一个 Person 模型:

    class Person(models.Model): first_name=models.CharField(max_length=30) last_name=models.CharField(max_length=30)

    2 安装模型

    为了在工程中包含这个 app,我们需要在配置类 INSTALLED_APPS 中添加设置。因为 app 的配置类(ChartConfig)写在文件 chart/apps.py 中,所以它的点式路径就是 ‘chart.apps.ChartConfig’。在文件 chart/settings.py 中 INSTALLED_APPS 子项内添加这个点式路径:

    INSTALLED_APPS = [ 'chart.apps.ChartConfig', ...]

    这时在项目路径下,执行以下命令:

    python manage.py makemigrations chart

    运行结果:

    Migrations for ‘chart’:chartmigrations001_initial.py– Create model Person

    makemigrations 命令的语法为 python manage.py makemigrations [app],它会比对模型版本,如果需要更新,会把需要更新的部分,存储在 migrations 目录中,为创建或更新模型做好准备:

    说说 Python Django 模型的创建流程

    生成的 0001_initial.py 内容如下:

    from django.db import migrations, modelsclass Migration(migrations.Migration): initial = True dependencies = [ ] operatiOns= [ migrations.CreateModel( name='Person', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('first_name', models.CharField(max_length=30)), ('last_name', models.CharField(max_length=30)), ], ), ]

    这是 Django 用于更新模型的代码。

    manage.py 有一个 sqlmigrate,可用于打印模型迁移时,会执行的 SQL 语句,语法如下:

    python manage.py sqlmigrate [app] [migrations 目录下,某个文件名中的编号]

    比如,我们想要查看刚刚建立的迁移内容:

    python manage.py sqlmigrate chart 0001

    运行结果:

    ---- Create model Person--CREATE TABLE `chart_person` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `first_name` varchar(30) NOT NULL, `last_name` varchar(30) NOT NULL);
  • 运行结果与我们所使用的数据库有关,上面的示例使用的是 MySQL。
  • 数据库的表名是由 app 名(chart)和模型名的小写形式( people)使用下划线连接而来,可自定义。
  • 会自动创建主键,可自定义。
  • 外键字段名后会追加字符串 “_id” ,可自定义。
  • 3 创建或更新模型

    执行 migrate 指令,创建或更新模型:

    python manage.py migrate

    运行结果:

    Running migrations:Applying chart.0001_initial… OK

    可以看到 MySQL 数据库中,已经建好了 chart_person 表咯:

    说说 Python Django 模型的创建流程

    Django 通过在数据库中 django_migrations 表来跟踪执行这些迁移:

    说说 Python Django 模型的创建流程

    Django 的迁移功能,可以让我们在开发过程中,改变数据库结构而不需要重新删除和创建表,使用它,可以让数据库实现平滑升级。


    创建或更新模型三部曲:

  • 在 app 的 models.py 文件,定义模型。
  • 在 [app]/settings.py 中 INSTALLED_APPS 子项内,注册 app。(如果已注册,可跳过该步骤)
  • 运行 python manage.py makemigrations [app] 把变化的模型生成相应的迁移文件。
  • 运行 python manage.py migrate 更新数据库。
  • 上一篇:JS新年倒计时
    下一篇:没有了
    网友评论