Om het op een leuke manier voor elkaar te krijgen, heb je een combinatie nodig van Factory Boy , Faker en aangepaste beheeropdrachten .
Met Factory Boy kun je sjablonen maken voor het produceren van geldige objecten en Faker genereert nepgegevens.
Wanneer je Factory Boy installeert, pip install factory_boy
, je krijgt ook Faker.
Gegeven,
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)
U kunt een fabriek als volgt definiëren:
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')
Vervolgens kunt u nepgebruikers maken door UserFactory.create()
. aan te roepen .
Een manier om uw 200 nepgebruikers te krijgen, is door in de shell te springen, python manage.py shell
, en doe:
>>> # import UserFactory here
>>> for _ in range(200):
... UserFactory.create()
Een andere manier, die u veel meer flexibiliteit kan geven, is door een aangepaste beheeropdracht te maken.
Maak bijvoorbeeld seed.py
(dit wordt de naam van de beheeropdracht) in de directory <yourapp>/management/commands
(om het door Django te laten ontdekken) met het volgende:
# <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()
En je zou het via de opdrachtregel uitvoeren met python manage.py seed
of python manage.py seed --users 50
bijvoorbeeld.