Skip to main content

A library to facilitate the creation of fake data (seeds) in Django projects.

Project description

jessilver_django_seed

jessilver_django_seed is a library for the Django framework that facilitates the creation of data (seeds) to populate the database during development and testing. With jessilver_django_seed, you can quickly generate realistic data for your Django applications, which is useful for testing functionalities and visualizing how the application behaves with different types of data.

Features

  • Fake data generation: Easily create test data for your Django models.
  • Simple configuration: Easy integration with existing Django projects.

Configuration

Installation

Install the library:

pip install jessilver_django_seed

Adding to the Project

Add jessilver_django_seed to INSTALLED_APPS in your settings.py file:

INSTALLED_APPS = [
    ...
    'jessilver_django_seed',
]

Create a constant called SEEDER_APPS to define the apps you want to populate with fake data:

SEEDER_APPS = [
    'app1',
    'app2',
    ...
]

Usage

Directory Structure

Inside the folder of the apps added in SEEDER_APPS, create a directory called seeders:

app1/
├── ...
├── seeders/
└── ...

Creating Seeders

Inside the seeders directory, you can create files to define the data you want to generate. For example, a file called user_seeder.py:

To create a seeder, you need to implement two main functions: seeder_name and seed. I will explain each of them:

  1. seeder_name

    This function is responsible for returning the name of the seeder. This name is generally used to uniquely identify the seeder within the system. It can be useful for organizational purposes and to ensure that the correct seeder is being executed.

    Example:

    def seeder_name():
        return "UserSeeder"
    
  2. seed

    This function is where the data insertion logic is implemented. It is responsible for populating the database with the desired data. The seed function usually contains commands to create records in the database, using models or direct queries.

    Example:

    def seed():
        users = [
            {"name": "Alice", "email": "alice@example.com"},
            {"name": "Bob", "email": "bob@example.com"},
        ]
        for user in users:
            # Assuming you have a User model
            User.create(**user)
    

Example of a complete seeder:

from jessilver_django_seed.seeders.BaseSeeder import BaseSeeder
from django.contrib.auth.models import User

class SuperUserSeeder(BaseSeeder):
    @property
    def seeder_name(self):
        return 'SuperUserSeeder'

    def seed(self):
        if not User.objects.filter(is_superuser=True).exists():
            User.objects.create_superuser(
                username='admin',
                email='admin@example.com',
                password='123456789',
                first_name='Admin',
                last_name='User'
            )
            self.success(f'Super User created')
        else:
            self.error(f'Super User already exists')

You can create multiple files or just one containing multiple classes. The only requirement is that the class names end with Seeder, otherwise, it will not work.

For example, you can create a file seeders.py with multiple classes:

from jessilver_django_seed.seeders.BaseSeeder import BaseSeeder
from django.contrib.auth.models import User
from myapp.models import Profile

class SuperUserSeeder(BaseSeeder):
    @property
    def seeder_name(self):
        return 'SuperUserSeeder'

    def seed(self):
        if not User.objects.filter(is_superuser=True).exists():
            User.objects.create_superuser(
                username='admin',
                email='admin@example.com',
                password='123456789',
                first_name='Admin',
                last_name='User'
            )
            self.success(f'Super User created')
        else:
            self.error(f'Super User already exists')

class ProfileSeeder(BaseSeeder):
    @property
    def seeder_name(self):
        return 'ProfileSeeder'

    def seed(self):
        for user in User.objects.all():
            Profile.objects.get_or_create(user=user, defaults={
                'bio': 'This is a bio',
                'location': 'Unknown'
            })
            self.success(f'Profile created for user {user.username}')

Running the Seeders

Now, you can run the command to populate the database with fake data:

python manage.py seed

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jessilver_django_seed-1.0.2.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jessilver_django_seed-1.0.2-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file jessilver_django_seed-1.0.2.tar.gz.

File metadata

  • Download URL: jessilver_django_seed-1.0.2.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for jessilver_django_seed-1.0.2.tar.gz
Algorithm Hash digest
SHA256 b5eb6e6ba85c6ca9e2e7ae68e2b33b2d7bd42f3de0aa777064418c5f1dfa1848
MD5 79d48ce17615e491f42756e66796f056
BLAKE2b-256 df0eb6d501f80ede9b4229bc090e73b4ef509600944b69d40f4605f44fc4266e

See more details on using hashes here.

File details

Details for the file jessilver_django_seed-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for jessilver_django_seed-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ed5e6f1275ad4d40a206c9f8ff4cd9a362c7fa4c1e1a93c4a70f8cc59fce40d9
MD5 a7ba28a429bfead7e6d7cb7ae4a1de51
BLAKE2b-256 2a8cce1c668fdf7e3093a84e5303d86e2297caa8b25734d90b1dd69792d8a094

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page