Django基本应用模型-Makemigrations和Migrate
在这篇文章中,我们将创建一个应用程序的基本模型。比如,我们有一个项目geeksforgeeks,在这个项目中,我们将创建一个新的应用程序,以简化和制作独立的模型单元。
要创建一个应用程序,通过终端运行命令。
python manage.py startapp geeks
并在settings.py中把geeks加入INSTALLED_APPS列表。现在应用程序的目录结构将是。
现在转到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和迁移后,数据库中会创建一个新表。你可以从geek -> 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 –
makemigrations基本上为预装的应用程序(可以在settings.py中的installed apps中查看)和你在installed apps中添加的新创建的应用程序的模型生成SQL命令。它不会在你的数据库文件中执行这些命令。所以表在makemigrations之后不会被创建。
应用makemigrations后,你可以通过sqlmigrate看到这些SQL命令,它显示了所有由makemigrations生成的SQL命令。要查看更多关于makemigrations的信息,请访问 – Django应用模型 – Python manage.py makemigrations命令
Migrate –
migrate在数据库文件中执行这些SQL命令。因此,在执行了migrate之后,你所安装的应用程序的所有表都在数据库文件中被创建。
你可以通过安装sqlite浏览器并打开db.sqlite3来确认这一点,你可以看到执行migrate命令后,所有的表都出现在数据库文件中。