Django:在不迁移的情况下初始化数据库
对不起,我对Django很不熟悉。我已经注意到了一些,但完全缺乏经验。 因此,这些问题听起来很傻,但我无法找到这种一般形式的问题。 所以 比如说,我有一些Django项目已经有人完成了。现在我有两种情况:Django:在不迁移的情况下初始化数据库,django,django-models,django-migrations,Django,Django Models,Django Migrations,对不起,我对Django很不熟悉。我已经注意到了一些,但完全缺乏经验。 因此,这些问题听起来很傻,但我无法找到这种一般形式的问题。 所以 比如说,我有一些Django项目已经有人完成了。现在我有两种情况: 我有最新版本的项目代码。但我对数据库一无所知:既没有数据库,也没有迁移。 举个例子,代码在某个Git上,但数据库和迁移文件在某个服务器上,此服务器丢失 我想知道我是否仍然可以从零开始初始化项目 获取数据库为空的新服务器。我克隆了项目的git代码。发射 manage.py makemigrati
manage.py makemigrations
manage.py migrate
我会用我们的模型文件初始化新数据库
对吗?
这有什么陷阱吗
- 克隆代码;复制(或不复制)现有迁移
- 创建新数据库并加载转储
- 跑
正确吗?Django版本对这个问题很重要。对于这个答案,并没有这样说明,假设它至少为1.7或更高 预先:从中学习并开始提交迁移文件作为代码的一部分,以避免这种情况。尽管这些文件大部分时间是自动生成的,但它们应该是代码库的一部分 1.从头开始初始化而不迁移文件 你的假设是正确的。详情如下:
$createdb name\u of_db
/manage.py makemigrations
。这将在所有应用程序中创建迁移
目录和文件。如果没有新文件,请运行命令,并明确说明应用程序,如/manage.py makemigrations my_app
。有关如何指定应用,请参阅此命令的帮助/manage.py migrate
。这将在步骤1中创建的数据库中创建所有必要的表和约束django_migrations
,如果需要,将其清空/manage.py migrate--false
通过这种方式,您可以确保数据库(尤其是约束)与Django代码保持一致。非常感谢您的完整响应。非常欣赏不同的用例场景。关于版本。我没有说得很精确,因为我的问题比较笼统。它与我从事的一个实际项目有一些联系,但实际项目的情况更为复杂。所以我问了一个一般性的问题,以确保我正确理解Django的基础知识。然而,真正的项目在Django 2.2上,因此我可以使用您的建议。:-)
manage.py makemigrations
manage.py migrate --fake
manage.py makemigrations
manage.py migrate