首页 > 解决方案 > 如何在 DjangoModelFactory 中将_sequence 重置为默认 id 字段序列

问题描述

像这样的工厂:

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

默认情况下,模型的id字段将从 1 开始。我希望 id 以更高的数字开始,例如 50000。

除非您在工厂中添加此行,否则使用UserFactory.reset_sequence(50000)不起作用

id = factory.Sequence(lambda n: n)

我有很多依赖于默认 id 增量行为的测试,所以这种方式是行不通的。

标签: djangodjango-modelsfactory-boy

解决方案


我能找到的唯一解决方法是创建一个User从 49999 开始的对象

if not UserFactory.objects.filter(id=49999).exists():
    UserFactory(49999)

现在你可以做

print(UserFactory().id)
>>> 50000

现在,如果您的模型的 id 是一个自动字段,您可能必须更改底层数据库模式,或者求助于该reset_sequence方法。如何让 Django AutoFields 以更高的数字开始


推荐阅读