3 | | Deprecated, use https://docs.djangoproject.com/en/2.2/howto/initial-data/ |
4 | | |
5 | | ''This is a very simple example. Please read something more complex if you need.'' |
6 | | |
7 | | Fixtures are very powerful to play with your database sample data during development process. |
8 | | After each '''python manage.py flush <myapp>''' command you need to populate database with sample data again and again using admin interface. It's quite boring, isn't it? |
9 | | With fixtures our life became more comfortable and easy. Look at this example. |
10 | | Lets imagine that you have some data in db. We can dump it, even if your models have ForeignKeys or any kind of *To* relations. |
11 | | |
12 | | First we need to define fixtures dir in settings file: |
13 | | |
14 | | {{{ |
15 | | FIXTURE_DIRS = ( |
16 | | '/path/to/myapp/fixtures/', |
17 | | ) |
18 | | }}} |
19 | | |
20 | | Lets dump our data: |
21 | | |
22 | | {{{ |
23 | | cd /path/to/my_project |
24 | | python manage.py dumpdata --format=json myapp > /path/to/myapp/fixtures/initial_data.json |
25 | | }}} |
26 | | |
27 | | Reset: |
28 | | |
29 | | {{{ |
30 | | python manage.py reset myapp |
31 | | |
32 | | You have requested a database reset. |
33 | | This will IRREVERSIBLY DESTROY any data for |
34 | | the "myapp" application in the database "mydb". |
35 | | Are you sure you want to do this? |
36 | | |
37 | | Type 'yes' to continue, or 'no' to cancel: yes |
38 | | }}} |
39 | | |
40 | | Now we have clean DB, lets populate it with our sample data: |
41 | | |
42 | | {{{ |
43 | | python manage.py syncdb |
44 | | Loading 'initial_data' fixtures... |
45 | | Installing json fixture 'initial_data' from '/path/to/myapp/fixtures/'. |
46 | | Installed 24 object(s) from 1 fixture(s) |
47 | | }}} |
48 | | |
49 | | == Fixture loading == |
50 | | |
51 | | The location where Django loads a fixture from might seem unintuitive. As with template files, the fixtures of all applications in a project share the same namespace. If you follow [source:django/trunk/django/core/management/commands/loaddata.py?rev=9770#L79 loaddata.py] you see that Django searches for {{{ *appnames*/fixtures }}} and {{{ settings.FIXTURE_DIRS }}} and loads the first match. So if you use names like {{{ testdata.json }}} for your fixtures you must make sure that no other active application uses a fixture with the same name. If not, you can never be sure what fixtures you actually load. |
52 | | |
53 | | Therefore it is suggested that you qualify your fixtures with the name of the associated application. One strategy for this is to use the application name as a filename prefix, as in {{{myapp/fixtures/myapp_testdata.json}}}. Another strategy, which is consistent with that recommended for templates and static files in the Django documentation, is to put your application fixtures in a application-named subdirectory, as in {{{myapp/fixtures/myapp/testdata.json}}}. Both of these conventions work well with {{{loaddata}}}. |
| 3 | Deprecated, use https://docs.djangoproject.com/en/3.2/howto/initial-data/ |
58 | | [https://docs.djangoproject.com/en/2.1/howto/initial-data/] \\ |
59 | | [https://docs.djangoproject.com/en/2.1/topics/testing/tools/#fixture-loading] \\ |
60 | | [https://docs.djangoproject.com/en/2.1/intro/tutorial03/] \\ |
61 | | [https://docs.djangoproject.com/en/2.1/howto/static-files/] |
| 8 | [https://docs.djangoproject.com/en/3.2/howto/initial-data/] \\ |
| 9 | [https://docs.djangoproject.com/en/3.2/topics/testing/tools/#fixture-loading] \\ |
| 10 | [https://docs.djangoproject.com/en/3.2/intro/tutorial02/] \\ |
| 11 | [https://docs.djangoproject.com/en/3.2/howto/static-files/] |