我想在我的Django项目中创建一个fixture文件。
我该怎么做?
答案 0 :(得分:48)
阅读“Providing initial data for models”。
manage.py dumpdata
将数据转储到JSON fixture文件中。阅读“django-admin.py and manage.py”。答案 1 :(得分:16)
您必须在app中创建一个名为fixtures的目录,并将fixtures文件放在那里。
您可以用json或xml编写它们,一种简单的方法是在管理界面中创建一些对象,然后运行manage.py dumpdata。这会将您创建的对象中的数据转储到fixture文件中。之后,您只需编辑这些文件以满足您的需求。
https://docs.djangoproject.com/en/1.7/ref/django-admin/#dumpdata-app-label-app-label-app-label-model
如果您想加载灯具,请使用manage.py loaddata。
https://docs.djangoproject.com/en/1.7/ref/django-admin/#loaddata-fixture-fixture
您可以使用在运行syncdb时自动加载的初始数据的夹具,只需创建一个名为initial_data的文件,Django就会识别它。
要将灯具用于测试目的,您必须在测试类中声明它们
https://docs.djangoproject.com/en/1.7/topics/testing/tools/#fixture-loading
答案 2 :(得分:8)
我降落在这里寻找如何做装置。我发现以下文章是最简单的。
https://code.djangoproject.com/wiki/Fixtures
将FIXTURE_DIRS
路径添加到您的应用settings.py
。
import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
FIXTURE_DIRS = (
os.path.join(PROJECT_DIR, 'fixtures'),
)
现在将当前的myapp
状态转储到JSON文件中。
python manage.py dumpdata --format=json myapp > myapp/fixtures/initial_data.json
多数民众赞成,是时候测试了。删除myapp
表格......
./manage.py sqlclear myapp | ./manage.py dbshell
现在重新加载灯具......
./manage.py syncdb
答案 3 :(得分:8)
python manage.py dumpdata app.model_name --indent 4 > fixtures/file_name.json
python manage.py loaddata fixtures/model_name.json --app app.model_name
- 缩进X是可选的。
答案 4 :(得分:2)
我正在编写一个django模块(django-generate_fixtures)来生成一个聪明的灯具,跟随一个父对象的每个相关模型。
它现在将数据转储为JSON,然后您可以像加载任何其他灯具一样加载它。
答案 5 :(得分:2)
如果要转储整个站点,则无需在设置中指定灯具目录,可以在项目中制作灯具目录并运行此
python manage.py dumpdata --format=json > /full-path-to-my-project/fixtures/initial_data.json