Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Füllen Sie die Django-Datenbank

Um es auf nette Weise zu erledigen, benötigen Sie eine Kombination aus Factory Boy , Faker und benutzerdefinierte Verwaltungsbefehle .

Mit Factory Boy können Sie Vorlagen zum Erstellen gültiger Objekte erstellen, und Faker generiert gefälschte Daten.

Wenn Sie Factory Boy installieren, pip install factory_boy , bekommst du auch Faker.

Gegeben,

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)

Sie können eine Factory wie folgt definieren:

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

Dann können Sie gefälschte Benutzer erstellen, indem Sie UserFactory.create() aufrufen .

Eine Möglichkeit, Ihre 200 gefälschten Benutzer zu bekommen, wäre, in die Shell zu springen, python manage.py shell , und tun:

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

Eine andere Möglichkeit, die Ihnen viel mehr Flexibilität bieten kann, besteht darin, einen benutzerdefinierten Verwaltungsbefehl zu erstellen.

Erstellen Sie beispielsweise seed.py (Dies wird der Verwaltungsbefehlsname sein) im Verzeichnis <yourapp>/management/commands (um es von Django entdecken zu lassen) mit dem Folgenden:

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

Und Sie würden es über die Befehlszeile mit python manage.py seed ausführen oder python manage.py seed --users 50 zum Beispiel.