Mysql
 sql >> Database >  >> RDS >> Mysql

Popolare il database di Django

Per farlo in modo corretto avrai bisogno di una combinazione di Factory Boy , Falso e comandi di gestione personalizzati .

Factory Boy ti consente di creare modelli per la produzione di oggetti validi e Faker genera dati falsi.

Quando installi Factory Boy, pip install factory_boy , ottieni anche Faker.

Dato,

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)

Puoi definire una Fabbrica come segue:

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')

Quindi, puoi creare utenti falsi chiamando UserFactory.create() .

Un modo per ottenere i tuoi 200 falsi utenti sarebbe quello di saltare nella shell, python manage.py shell , e fai:

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

Un altro modo, che può darti molta più flessibilità, è creare un comando di gestione personalizzato.

Ad esempio, crea seed.py (questo sarà il nome del comando di gestione) nella directory <yourapp>/management/commands (per averlo scoperto da Django) con quanto segue:

# <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()

E lo eseguiresti tramite la riga di comando con python manage.py seed o python manage.py seed --users 50 per esempio.