Заполнить базу данных Django

Я разрабатываю приложение Django, в котором хранится информация о пользователе, такая как его адрес, номер телефона, имя и т. д.

Я работал с PHP-библиотекой Faker и сеялкой, включенной в Laravel. Я смог заполнить базу данных поддельными данными, но теперь я работаю с Django.

Я хотел бы заполнить таблицу пользователей примерно 200 записями. Но я не хочу, чтобы записи были случайными строками. Я хочу, чтобы это были поддельные данные, которые я могу получить с помощью Laravel. Я не знаю, как это сделать.

Что мне нужно сделать, чтобы сохранить поддельные данные?

Это для того, чтобы показать конечному пользователю приложение с некоторыми записями, чтобы он мог видеть статистику и другие вещи. Данные должны оставаться в базе данных. Я пытался использовать модульные тесты, но это удаляет базу данных после завершения модульного теста.

Спасибо!


person user3186459    schedule 08.10.2015    source источник
comment
простой поиск дал: github.com/joke2k/django-faker.   -  person Ali    schedule 08.10.2015
comment
Спасибо, я уже пробовал с этим пакетом, но безуспешно, но я обнаружил проблему, когда вы устанавливаете его с помощью pip install django-faker, вы должны установить его с помощью pip install git+git://github.com /joke2k/django-faker.git   -  person user3186459    schedule 12.10.2015


Ответы (2)


Чтобы сделать это красиво, вам понадобится комбинация Factory Boy, Faker и пользовательские команды управления.

Factory Boy позволяет создавать шаблоны для создания действительных объектов, а Faker генерирует поддельные данные.

Когда вы устанавливаете Factory Boy, pip install factory_boy, вы также получаете Faker.

Дано,

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)

Вы можете определить Фабрику следующим образом:

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

Затем вы можете создавать поддельных пользователей, вызывая UserFactory.create().

Один из способов получить 200 поддельных пользователей — зайти в оболочку python manage.py shell и сделать:

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

Другой способ, который может дать вам гораздо больше гибкости, — это создать пользовательскую команду управления.

Например, создайте seed.py (это будет имя команды управления) в каталоге <yourapp>/management/commands (чтобы Django обнаружил его) со следующим:

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

И вы бы запустили его через командную строку, например, с python manage.py seed или python manage.py seed --users 50.

person Dwayne Crooks    schedule 25.01.2017

Попробуйте приложение django-autofixture:
https://github.com/gregmuellegger/django-autofixture

Это приложение призвано обеспечить простой способ загрузки массы случайно сгенерированных тестовых данных в вашу базу данных для разработки. Вы можете использовать команду управления для загрузки тестовых данных через командную строку.

Он называется autofixture, потому что он основан на фикстурах django. Без автофиксации вы добавляете тестовые данные через админку, чтобы посмотреть, как выглядят нестатические страницы на вашем сайте. Вы экспортируете данные, используя данные дампа, чтобы отправить их своим коллегам или сохранить их, прежде чем создавать приложение сброса manage.py и так далее. По мере усложнения вашего сайта процесс добавления и повторного добавления данных становится все более и более раздражающим.

См. также эти пакеты django, возможно, они помогут с поддельными тестами и другими проблемами. https://www.djangopackages.com/grids/g/fixtures/

person Paulo Pessoa    schedule 08.10.2015