我正在尝试使用工厂和 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 我想知道为什么会发生这种情况。
我刚开始使用工厂男孩和伪造者。请帮我解决这个问题。如果我遗漏了什么,请告诉我。