gpt4 book ai didi

python - 填充 Django 数据库

转载 作者:IT老高 更新时间:2023-10-29 00:11:13 29 4
gpt4 key购买 nike

我正在开发一个 Django 应用程序,它存储用户信息,例如他们的地址、电话号码、姓名等。

我使用过 PHP 的 Faker Laravel 中包含的库和播种机。我已经能够用假数据填充数据库,但现在我正在使用 Django。

我想用大约 200 个条目填充我的用户表。但是,我不希望条目是随机字符串。我希望它是假数据,就像我可以通过 Laravel 获得的那样。我不知道该怎么做。

我需要做什么来持久化虚假数据?

这是为了向最终用户显示带有一些条目的应用程序,以便他可以查看统计信息和其他内容。数据将需要保留在数据库中。我尝试使用单元测试,但在单元测试结束后删除了数据库。

谢谢!

最佳答案

要以一种很好的方式完成它,您需要组合 Factory Boy , Fakercustom management commands .

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 个假用户的一种方法是跳入 shell,python manage.py shell ,并做:

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

另一种可以为您提供更多灵 active 的方法是创建自定义管理命令。

例如,创建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例如。

关于python - 填充 Django 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33024510/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com