如何创建夹具文件

Vik*_*yan 52 django fixtures

我想在我的Django项目中创建一个fixture文件.

我怎样才能做到这一点?

S.L*_*ott 53

阅读" 为模型提供初始数据 ".

  1. 将一些数据加载到Django管理的数据库中.简单的Python脚本可以很好地工作,或者使用默认的管理界面.
  2. 用于manage.py dumpdata将数据转储到JSON fixture文件中.阅读" django-admin.py和manage.py ".

  • 您提供的链接不再有效,这是一个新链接:[TestCase.fixtures](https://docs.djangoproject.com/en/1.9/howto/initial-data/) (4认同)
  • 链接到docs时,最好链接到[dev]("https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-appname-appname-appname-model")版本? (2认同)

Fac*_*sco 16

您必须在应用程序中创建一个名为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/howto/initial-data/#automatically-loading-initial-data-fixtures

要使用灯具进行测试,您必须在测试类中声明它们

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#fixture-loading


Jay*_*odi 14

转储数据:

python manage.py dumpdata app.model_name --indent 4 > fixtures/file_name.json
Run Code Online (Sandbox Code Playgroud)

要加载数据:

python manage.py loaddata fixtures/model_name.json --app app.model_name
Run Code Online (Sandbox Code Playgroud)

--indent X是可选的.

  • --indent 确实是可选的,但如果您想要可以签入 git 并具有实际可读差异的固定装置,那么这是一个非常好的主意。如果没有它,灯具最终都会变成一条线! (3认同)

cev*_*ris 9

我来到这里寻找如何做装置.我发现以下文章是最简单的.

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'),
)
Run Code Online (Sandbox Code Playgroud)

现在将当前myapp状态转储到JSON文件中.

python manage.py dumpdata --format=json myapp > myapp/fixtures/initial_data.json
Run Code Online (Sandbox Code Playgroud)

多数民众赞成,是时候测试了.丢myapp桌......

./manage.py sqlclear myapp | ./manage.py dbshell
Run Code Online (Sandbox Code Playgroud)

现在重新加载灯具......

./manage.py syncdb 
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,您可以使用小写路径选择性地转储模型.你也可以通过`python -mjson.tool`管道来打印 - python manage.py dumpdata myapp.mymodel | python -mjson.tool> mymodel.json`. (4认同)

Dr *_*tan 5

如果你想转储整个站点,你不需要在设置中指定一个fixtures目录,你可以在你的项目中创建一个fixtures目录并运行这个

python manage.py dumpdata --format=json > /full-path-to-my-project/fixtures/initial_data.json
Run Code Online (Sandbox Code Playgroud)