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.