Preencha o database do Django

Estou desenvolvendo um aplicativo Django que armazena informações do usuário, como endereço, número de telefone, nome etc.

Eu trabalhei com a biblioteca Faker do PHP e a semeadora incluída no Laravel. Eu consegui preencher o database com dados falsos, mas agora estou trabalhando com o Django.

Eu gostaria de preencher minha tabela de usuários com cerca de 200 inputs. Mas eu não quero que as inputs sejam aleatórias. Eu quero que sejam dados falsos, como eu posso conseguir com o Laravel. Eu não sei como fazer isso.

O que preciso fazer para persistir dados falsos?

Isto é para mostrar ao usuário final o aplicativo com algumas inputs para que ele possa ver statistics e outras coisas. Os dados precisarão permanecer no database. Eu tentei usar testes de unidade, mas isso exclui o database após o término do teste de unidade.

Obrigado!

@ user3186459 Esta é uma excelente pergunta.

Para fazê-lo de uma maneira legal, você precisará de uma combinação de Factory Boy , Faker e comandos de gerenciamento personalizados .

O Factory Boy permite que você crie modelos para produzir objects válidos e o Faker gera dados falsos.

Quando você instala o Factory Boy, pip install factory_boy e também obtém o Faker.

Dado,

 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) 

Você pode definir uma Fábrica da seguinte maneira:

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

Em seguida, você pode criar usuários falsos chamando UserFactory.create() .

Uma maneira de obter seus 200 usuários falsos seria entrar no shell, python manage.py shell , e fazer:

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

Outra maneira, que pode lhe dar muito mais flexibilidade, é criar um comando de gerenciamento personalizado.

Aqui está um exemplo simples:

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

E você o executaria via linha de comando com python manage.py seed ou python manage.py seed --users 50 por exemplo.

Experimente o aplicativo django-autofixture :
https://github.com/gregmuellegger/django-autofixture

Este aplicativo visa fornecer uma maneira simples de carregar massas de dados de teste gerados aleatoriamente em seu database de desenvolvimento. Você pode usar um comando de gerenciamento para carregar dados de teste por meio da linha de comando.

É chamado de autofixture porque é baseado em acessórios do django. Sem autofixture, você adiciona dados de teste por meio do admin para ver como as páginas não estáticas em seu site se parecem. Você exporta dados usando dumpdata para enviá-los a seus colegas ou preservá-los antes de fazer um aplicativo de redefinição manage.py e assim por diante. À medida que seu site cresce em complexidade, o processo de adicionar e adicionar novamente os dados se torna cada vez mais irritante.

Veja estes pacotes de django também, talvez possa ajudar com testes falsos e outros problemas. https://www.djangopackages.com/grids/g/fixtures/