📜  Django 基本应用模型 – Makemigrations 和 Migrate

📅  最后修改于: 2022-05-13 01:55:17.289000             🧑  作者: Mango

Django 基本应用模型 – Makemigrations 和 Migrate

在本文中,我们将创建一个应用程序的基本模型。比如说,我们有一个项目geeksforgeeks ,我们将在其中创建一个新应用程序,以简化和制作独立的模型单元。

通过终端创建应用运行命令:

python manage.py startapp geeks

并将极客添加到settings.py的 INSTALLED_APPS 列表中。现在应用程序的目录结构将是,

Django-Basic-App-Model-Makemigrations-and-MigrateDjango-basic-app-structure-

现在转到 geeks 应用程序中的models.py ,在这里我们将创建我们的第一个模型。要创建模型,您需要首先从django.db.models库中导入模型。

现在 models.py 看起来像,

# importing Model from django
from django.db.models import Model

根据 Django 文档,模型是有关您的数据的唯一、明确的信息来源。它包含您存储的数据的基本字段和行为。通常,每个模型都映射到一个数据库表。

Django 提供了许多预定义的字段和方法来创建模型。要创建模型,您需要先指定模型名称。

models.py中输入以下代码

from django.db import models
from django.db.models import Model
# Created an empty model 
class GeeksModel(Model):
    pass

类似的语法将始终用于创建模型。
在对任何应用程序的模型文件进行任何更改后,您需要从终端运行以下命令

Python manage.py makemigrations

在此命令之后运行以下命令以最终相应地实施数据库更改

Python manage.py migrate 

运行 makemigrations 并迁移后,将在数据库中创建一个新表。你可以从 geeks -> makemigrations -> 0001_initial.py 查看。

# Generated by Django 2.2.5 on 2019-09-25 06:00
  
from django.db import migrations, models
  
  
class Migration(migrations.Migration):
    initial = True
  
    dependencies = []
  
    operations = [
        migrations.CreateModel(
            name ='GeeksModel',
            fields =[
                ('id', models.AutoField(auto_created = True,
                  primary_key = True, serialize = False,
                  verbose_name ='ID')),], ),
    ]

让我们清楚地了解 Makemigrations 和 Migrate 是做什么的。

移民——

makemigrations基本上为预安装的应用程序(可以在 settings.py 中的已安装应用程序中查看)和您在已安装应用程序中添加的新创建的应用程序模型生成 SQL 命令。它不会在您的数据库文件中执行这些命令。因此在 makemigrations 之后不会创建表。

应用 makemigrations 后,您可以使用 sqlmigrate 查看那些 SQL 命令,其中显示了 makemigrations 生成的所有 SQL 命令。要查看有关 makemigrations 的更多信息,请访问 – Django App Model – Python manage.py makemigrations 命令

迁移——

migrate 在数据库文件中执行那些 SQL 命令。因此,执行迁移后,已安装应用程序的所有表都会在数据库文件中创建。

您可以通过安装 sqlite 浏览器并打开db.sqlite3来确认这一点,您可以在执行 migrate 命令后看到所有表都出现在数据库文件中。要查看有关 makemigrations 的更多信息,请访问 Django manage.py migrate 命令 | Python