内置应用程序的 Django 初始数据

Posted

技术标签:

【中文标题】内置应用程序的 Django 初始数据【英文标题】:Django initial data for built-in app 【发布时间】:2017-09-18 21:19:11 【问题描述】:

我开始使用 Django 内置的“重定向”应用来替换我在 urls.py 中的一些现有重定向。我想知道是否有任何普遍接受的方式将初始数据包含在其他应用程序的代码库中。例如,如果是针对我创建的应用程序,我可以创建一个迁移文件,其中包含一个 RunPython 部分,我可以在其中加载一些初始数据。对于内置或第三方应用,似乎没有任何方法可以创建迁移文件来添加初始数据。

我现在能想到的最好办法是在我的存储库中包含一个包含初始数据的 .sql 文件,然后在将代码推送到不同实例时手动导入数据。

【问题讨论】:

【参考方案1】:

你可以通过使用夹具来做到这一点

在您的应用目录中创建文件夹名称fixtures

使用此命令创建一个您想要作为初始数据的 json 文件。

 python manage.py dumpdata you_app_name.model_name --indent 2 > model_name.json

将此model_name.json 复制到fixtures 文件夹。

将代码上传到仓库。

然后在 migrate command 之后。键入此命令以加载初始数据。

  python manage.py loaddata model_name.json

reference

【讨论】:

我看到我可以使用FIXTURE_DIRS 创建一个项目范围的固定装置目录,所以我想这是迄今为止最好的选择。但是,迁移后仍需要手动操作。 @TimTisdall 如果您使用的是 linux 操作系统。然后你可以编写一个别名命令并传递 python manage.py migrate && python manage.py loaddata。所以它会在一个步骤中完成。或使用 python fab (Fabric) 并编写一个函数以在一次调用中执行所有命令。 @TimTisdall 。我认为它的解决方案。我不知道更多。 我同意,我认为没有比这更好的解决方案,但它需要知道运行loaddata,就像一个人需要知道运行一个独立的 .sql文件。我希望有一种方法可以链接到迁移系统。

以上是关于内置应用程序的 Django 初始数据的主要内容,如果未能解决你的问题,请参考以下文章

01.Django-基础

Django - 来自数据库的 ModelForm 初始数据

django内置缓存

无法在 django 的内置身份验证应用程序中删除用户

Django 内置字段

Django Form 内置字段