如何 reset_sequence 到 DjangoModelFactory 中的默认 id 字段序列
How to reset_sequence to default id field sequence in DjangoModelFactory
有这样的工厂:
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
模型的 id
字段默认从 1 开始。我希望 ID 从更大的数字开始,例如 50000。
使用UserFactory.reset_sequence(50000)
无效
除非你在工厂中添加这一行
id = factory.Sequence(lambda n: n)
我有很多依赖于默认 id 增量行为的测试,所以这种方式是行不通的。
我能找到的唯一解决方法是创建一个从 49999
开始的 User
对象
if not UserFactory.objects.filter(id=49999).exists():
UserFactory(49999)
现在你可以做
print(UserFactory().id)
>>> 50000
现在,如果您的模型的 ID 是一个自动字段,您可能必须更改基础数据库模式,或求助于 reset_sequence
方法。 How to get Django AutoFields to start at a higher number
有这样的工厂:
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
模型的 id
字段默认从 1 开始。我希望 ID 从更大的数字开始,例如 50000。
使用UserFactory.reset_sequence(50000)
无效
除非你在工厂中添加这一行
id = factory.Sequence(lambda n: n)
我有很多依赖于默认 id 增量行为的测试,所以这种方式是行不通的。
我能找到的唯一解决方法是创建一个从 49999
开始的User
对象
if not UserFactory.objects.filter(id=49999).exists():
UserFactory(49999)
现在你可以做
print(UserFactory().id)
>>> 50000
现在,如果您的模型的 ID 是一个自动字段,您可能必须更改基础数据库模式,或求助于 reset_sequence
方法。 How to get Django AutoFields to start at a higher number