Seed your Django project with fake data
Project description
Django-seed uses the faker library to generate test data for your Django models. This has been “hard-forked” from django_faker in order to support newer versions of Python and Django
Django-seed allows you to write code to generate models, and seed your database with one simple manage.py command!
Installation
To install django-seed, use pip:
pip install django-seed
Or to install from source:
python setup.py install
Configuration
Add it to your installed apps in settings.py:
INSTALLED_APPS = ( ... 'django_seed', )
Usage
Note: When seeding models with Foreign Keys, you need to make sure that those models are seeded first. For example, if a model in app A has a foreign key to a model in app B, you must seed app B first.
Using with command
With django-seed, you can seed your database with test data from the command line using the manage.py seed command.
Ex: Seed 15 of each model for the app api:
$ python manage.py seed api --number=15
That’s it! Now you have 15 of each model seeded into your database.
Using with code
django-seed provides methods to easily seed test databases for your Django models. To seed your database with Model instances, import Seed, get a seeder instance, and use the add_entity method.
Ex: seeding 5 Game and 10 Player objects:
from django_seed import Seed seeder = Seed.seeder() from myapp.models import Game, Player seeder.add_entity(Game, 5) seeder.add_entity(Player, 10) inserted_pks = seeder.execute()
The seeder uses the name and column type to populate the Model with relevant data. If django-seed misinterprets a column name, you can still specify a custom function to be used for populating a particular column, by adding a third argument to the add_entity() method:
seeder.add_entity(Player, 10, { 'score': lambda x: random.randint(0,1000), 'nickname': lambda x: seeder.faker.email(), }) seeder.execute()
Django-seed does not populate auto-incremented primary keys, instead seeder.execute() returns the list of inserted PKs, indexed by class:
print inserted_pks { <class 'faker.django.tests.Player'>: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], <class 'faker.django.tests.Game'>: [1, 2, 3, 4, 5] }
You may specify a different locale by passing it in the constructor of the seeder. Defaults to settings.LANGUAGE_CODE
seeder = Seed.seeder(locale='sv_SE') seeder.faker.city() # 'Västerås'
Tests
To run django tests in a django environment, first make sure you have the packages from requirement-test.txt installed, then run the following:
$ python runtests.py
or if you have django_seed in INSTALLED_APPS:
$ python manage.py test django_seed
License
MIT. See LICENSE for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size django-seed-0.2.2.tar.gz (12.5 kB) | File type Source | Python version None | Upload date | Hashes View |