For at få det gjort på en god måde skal du bruge en kombination af Factory Boy , Faker og tilpassede administrationskommandoer .
Factory Boy giver dig mulighed for at oprette skabeloner til fremstilling af gyldige objekter, og Faker genererer falske data.
Når du installerer Factory Boy, pip install factory_boy
, får du også Faker.
Givet,
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)
Du kan definere en fabrik som følger:
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')
Derefter kan du oprette falske brugere ved at kalde UserFactory.create()
.
En måde at få dine 200 falske brugere på ville være at hoppe ind i skallen, python manage.py shell
, og gør:
>>> # import UserFactory here
>>> for _ in range(200):
... UserFactory.create()
En anden måde, som kan give dig meget mere fleksibilitet, er at oprette en brugerdefineret administrationskommando.
Opret f.eks. seed.py
(dette vil være administrationskommandonavnet) i mappen <yourapp>/management/commands
(for at få det opdaget af Django) med følgende:
# <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()
Og du ville køre det via kommandolinjen med python manage.py seed
eller python manage.py seed --users 50
for eksempel.