私は、住所、電話番号、名前などのユーザー情報を保存するDjangoアプリケーションを開発しています。
私はPHPの Faker ライブラリとLaravelに含まれているシーダーを使用しました。データベースに偽のデータを入力することができましたが、現在はDjangoを使用しています。
ユーザーテーブルに約200のエントリを入力したいと思います。ただし、エントリをランダムな文字列にしたくありません。 Laravelで取得できるような偽のデータにしたいです。やり方がわかりません。
偽のデータを永続化するには何をする必要がありますか?
これは、エンドユーザーにいくつかのエントリを含むアプリケーションを表示して、統計などを確認できるようにするためのものです。データはデータベースにとどまる必要があります。単体テストを使用してみましたが、単体テストの終了後にデータベースが削除されます。
ありがとう!
それをうまく行うには、 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人の偽のユーザーを取得する1つの方法は、シェルにジャンプして_python manage.py Shell
_し、次のことを行うことです。
_ >>> # import UserFactory here
>>> for _ in range(200):
... UserFactory.create()
_
柔軟性を大幅に高めるもう1つの方法は、カスタム管理コマンドを作成することです。
たとえば、ディレクトリ_seed.py
_(Djangoによって検出されるようにするため)に次のように_<yourapp>/management/commands
_(これは管理コマンド名になります)を作成します。
_# <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
_などを使用して実行します。
Django-autofixture
アプリをお試しください:
https://github.com/gregmuellegger/Django-autofixture
このアプリは、ランダムに生成された大量のテストデータを開発データベースにロードする簡単な方法を提供することを目的としています。管理コマンドを使用して、コマンドラインからテストデータをロードできます。
Djangoのフィクスチャに基づいているため、autofixtureという名前が付けられています。自動フィクスチャを使用しない場合は、管理者を通じてテストデータを追加して、サイトの非静的ページがどのように表示されるかを確認します。 dumpdataを使用してデータをエクスポートし、同僚に送信したり、manage.pyリセットアプリを作成する前に保存したりします。サイトが複雑になるにつれて、データを追加および再追加するプロセスはますます煩わしくなります。
これを参照してくださいDjangoパッケージも、偽のテストやその他の問題に役立つ可能性があります。 https://www.djangopackages.com/grids/g/fixtures/