Django,如何在不创建新文件的情况下测试迁移/djang_session行



我有一个名为Sliders的应用程序,并且已经创建了模型。我该如何运行迁移,这样只会创建数据库表,但django_migrations表中没有新条目,应用程序目录中也没有创建目录migrations

这是我通常做的事情:

创建模型后,制作迁移文件:python manage.py makemigrations sliders

然后我运行迁移文件:python manage.py migrate sliders

这将在Sliders应用程序中创建一个迁移目录,并将行插入django_migrations表。我该如何防止这种情况发生?只想在数据库中创建表。

如果您想在不生成任何迁移或向django_migrations添加条目的情况下迁移某些内容,则可以在迁移时使用--run-syncdb标志[Django-docs]:

python manage.py migrate sliders --run-syncdb

引用自上述链接文件:

允许在不迁移的情况下为应用程序创建表。虽然这不是建议,迁移框架有时在很大程度上太慢拥有数百个模型的项目。

在上面的语句中,有一点不太明显,那就是如果应用程序已经应用了迁移,那么这将不起作用。

注意:我想提醒您文档中已经考虑过的一点">这是不推荐的";。除非你真的需要这样做并且知道你在做什么我不会推荐这样做。

您的INSTALLED_APPS应该是这样的:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
...
'sliders',
]

尝试一些命令:

python manage.py makemigrations  # Check for changes, ignore if nothing
python manage.py migrate # Apply changes, ignore if nothing
python manage.py syncdb

如果没有,请重新迁移DB

python manage.py migrate --fake sliders zero
python manage.py migrate

最新更新