sql >> Database >  >> RDS >> Mysql

Django-database vullen

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.



  1. Kalendertabel voor datawarehouse

  2. SQL meerdere kolommen in IN-clausule

  3. mysql Fatale fout:kan geen geheugen toewijzen voor de bufferpool

  4. Is er een manier om de JBoss-verbindingspool opnieuw te verbinden met Oracle wanneer de verbindingen slecht worden?