web-dev-qa-db-fra.com

Comment créer un fichier de fixture

Je veux créer un fichier de fixture dans mon projet Django.

Comment puis-je faire ceci?

49
Viktor Apoyan

Lisez " Fourniture des données initiales pour les modèles ".

  1. Chargez des données dans une base de données gérée par Django. Les scripts simples Python fonctionnent bien, ou utilisent l'interface d'administration par défaut.
  2. Utilisation manage.py dumpdata pour vider les données dans un fichier d'appareil JSON. Lisez " Django-admin.py et manage.py ".
51
S.Lott

Vous devez créer un répertoire dans votre application nommé appareils et y placer vos fichiers d'appareils.

Vous pouvez les écrire en json ou xml, une façon simple de les créer est de créer des objets dans l'interface d'administration puis d'exécuter manage.py dumpdata. Cela viderait les données des objets que vous avez créés dans des fichiers de fixture. Après cela, vous pouvez simplement modifier ces fichiers pour les adapter à vos besoins.

https://docs.djangoproject.com/en/1.7/ref/Django-admin/#dumpdata-app-label-app-label-app-label-model

Si vous souhaitez charger les appareils que vous utilisez manage.py loaddata.

https://docs.djangoproject.com/en/1.7/ref/Django-admin/#loaddata-fixture-fixture

Vous pouvez avoir des appareils avec des données initiales qui seraient automatiquement chargés lorsque vous exécutez syncdb, créez simplement un fichier nommé initial_data et Django le reconnaîtrait.

https://docs.djangoproject.com/en/1.7/howto/initial-data/#automatically-loading-initial-data-fixtures

Pour utiliser des appareils à des fins de test, vous devez les déclarer dans votre classe de test

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

16
Facundo Casco

Pour vider les données:

python manage.py dumpdata app.model_name --indent 4 > fixtures/file_name.json

Pour charger des données:

python manage.py loaddata fixtures/model_name.json --app app.model_name

--indent X est facultatif.

12
Jay Modi

J'ai atterri ici en cherchant comment faire des appareils. J'ai trouvé que l'article suivant était le plus simple.

https://code.djangoproject.com/wiki/Fixtures

Ajouter le FIXTURE_DIRS chemin d'accès à vos applications settings.py.

import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
FIXTURE_DIRS = (
   os.path.join(PROJECT_DIR, 'fixtures'),
)

Vider maintenant votre état myapp actuel dans un fichier JSON.

python manage.py dumpdata --format=json myapp > myapp/fixtures/initial_data.json

C'est tout, il est temps de tester. Supprimer les tables myapp ...

./manage.py sqlclear myapp | ./manage.py dbshell

Maintenant, rechargez les appareils maintenant ...

./manage.py syncdb 
9
cevaris

Si vous voulez vider l'intégralité du site, vous n'avez pas besoin de spécifier un répertoire d'appareils dans les paramètres, vous pouvez créer un répertoire d'appareils dans votre projet et l'exécuter.

python manage.py dumpdata --format=json > /full-path-to-my-project/fixtures/initial_data.json
3
Dr Manhattan

J'écris actuellement un module Django ( Django-generate_fixtures ) pour générer des appareils intelligents, en suivant tous les modèles associés d'un objet parent.

Il sauvegarde les données au format JSON en ce moment, puis vous pouvez les charger de la même manière que tous les autres appareils.

2
FlogFR