Mysql
 sql >> Base de données >  >> RDS >> Mysql

Remplir la base de données Django

Pour le faire de manière agréable, vous aurez besoin d'une combinaison de Factory Boy , Faux et commandes de gestion personnalisées .

Factory Boy vous permet de créer des modèles pour produire des objets valides et Faker génère de fausses données.

Lorsque vous installez Factory Boy, pip install factory_boy , vous obtenez également Faker.

Étant donné,

from django.db import models


class User(models.Model):
    name = models.CharField(max_length=64)
    address = models.CharField(max_length=128)
    phone_number = models.CharField(max_length=32)

Vous pouvez définir une Usine comme suit :

import factory  
import factory.django

class UserFactory(factory.django.DjangoModelFactory):  
    class Meta:
        model = User

    name = factory.Faker('name')
    address = factory.Faker('address')
    phone_number = factory.Faker('phone_number')

Ensuite, vous pouvez créer de faux utilisateurs en appelant UserFactory.create() .

Une façon d'obtenir vos 200 faux utilisateurs serait de sauter dans le shell, python manage.py shell , et faites :

 >>> # import UserFactory here
 >>> for _ in range(200):
 ...     UserFactory.create()

Une autre façon, qui peut vous donner beaucoup plus de flexibilité, est de créer une commande de gestion personnalisée.

Par exemple, créez seed.py (ce sera le nom de la commande de gestion) dans le répertoire <yourapp>/management/commands (pour le faire découvrir par Django) avec ce qui suit :

# <yourapp>/management/commands/seed.py
from django.core.management.base import BaseCommand

# import UserFactory here


class Command(BaseCommand):
    help = 'Seeds the database.'

    def add_arguments(self, parser):
        parser.add_argument('--users',
            default=200,
            type=int,
            help='The number of fake users to create.')

    def handle(self, *args, **options):
        for _ in range(options['users']):
            UserFactory.create()

Et, vous l'exécuteriez via la ligne de commande avec python manage.py seed ou python manage.py seed --users 50 par exemple.