use*_*875 35 django database-migration django-south schema-migration
根据这里的文档:https: //docs.djangoproject.com/en/1.8/topics/migrations/它说:
migrate, which is responsible for applying migrations, as well as unapplying and listing their status.
Run Code Online (Sandbox Code Playgroud)
和
makemigrations, which is responsible for creating new migrations based on the changes you have made to your models.
Run Code Online (Sandbox Code Playgroud)
据我所知,我先做
makemigrations
Run Code Online (Sandbox Code Playgroud)
创建迁移文件,然后执行
migrate
Run Code Online (Sandbox Code Playgroud)
实际应用迁移?
请注意,我刚刚开始我的Django项目,并将我的应用程序添加到我的"installed_apps"列表中.在那之后,我做到了
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
它说
You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them.
Run Code Online (Sandbox Code Playgroud)
它没有提到任何关于运行makemigrations的内容.
Raj*_*att 17
正如Django的文档所说,迁移是Django将您对模型所做的更改(添加字段,删除模型等)传播到数据库模式中的方式.
makemigrations基本上为预先安装的应用程序(可以在settings.py中的已安装应用程序中查看)和您在已安装的应用程序中添加的新创建的应用程序模型生成SQL命令.它不会在数据库文件中执行这些命令.因此,在makemigrations之后不会创建表.
应用makemigrations后,您可以看到带有sqlmigrate的 SQL命令,这些命令显示了makemigrations生成的所有SQL命令.
migrate在数据库文件中执行这些SQL命令.因此,在执行迁移后,所有已安装应用程序的表都将在数据库文件中创建.
您可以通过安装sqlite浏览器并打开db.sqlite3 来符合这一点,您可以在执行migrate命令后看到所有表都出现在数据库文件中.
bSr*_*bSr 11
众所周知,Django是一个ORM(对象关系映射)。当我们使用命令时:
python manage.py makemigrations [app_name]
它将生成sql命令来创建与您在models.py文件中创建的每个类相对应的表。然后命令:
python manage.py migration [app_name]
将使用makemigrations生成的命令在数据库中创建表。
例如,如果我们制作一个模型类,
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)
使用makemigrations之后的相应sql命令将是
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
并使用上述命令,当我们使用迁移时,将在数据库中创建表。
小智 5
您应该在 settings.py 文件的 INSTALLED APPS 部分添加新应用程序后运行命令 -migrate- ,以便将数据库状态与当前的模型集同步。假设您已经修改了 models.py 文件。
当您运行 -makemigrations- 时,它会将模型的更改打包到单独的迁移文件中。
通常,您会首先运行 makemigrations,然后进行迁移。
这是 django 对旧的手动迁移方式的替代,它们可用于对模型中的更改进行编目并写出将在数据库中发生的更改。
Migrate 基本上是旧的syncdb,但它考虑了 makemigrations 所做的所有迁移。
| 归档时间: |
|
| 查看次数: |
16816 次 |
| 最近记录: |