如何 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