小编Cha*_*ukh的帖子

如何使用工厂和faker在Django中生成唯一数据?

我正在尝试使用工厂和 faker 将数据插入我的数据库(sqlLite3)。

这是我的模型:

class User(models.Model):
    id = models.CharField(max_length=9, primary_key=True)
    real_name = models.CharField(max_length=200)
    tz = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

型号工厂:

class UserFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = User

    fake.add_provider(MyProvider)
    real_name = factory.Faker('name')
    id = ''.join(fake.random_letters(length=9)).upper()
    tz = fake.timezone()
Run Code Online (Sandbox Code Playgroud)

当我UserFactory.create()第一次运行时,添加了 User ,但是当我在同一个 python shell 中第二次运行或尝试运行时UserFactory.create_batch(5),它给出了以下错误:

django.db.utils.IntegrityError: UNIQUE constraint failed: activities_user.id

如果我在不同的终端中运行它或从 shell 退出并再次运行相同的命令,它运行良好。

似乎''.join(fake.random_letters(length=9)).upper()总是返回相同的值。尽管我使用了 random_letters 我想知道为什么会发生这种情况。

我刚开始使用工厂男孩和伪造者。请帮我解决这个问题。如果我遗漏了什么,请告诉我。

python django factory python-3.x faker

6
推荐指数
1
解决办法
4349
查看次数

标签 统计

django ×1

factory ×1

faker ×1

python ×1

python-3.x ×1