如何在DjangoModelFactory中将reset_sequence重置为默认id字段序列

时间:2018-11-13 23:26:42

标签: django django-models factory-boy

拥有像这样的工厂

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

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

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

id = factory.Sequence(lambda n: n)

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

1 个答案:

答案 0 :(得分:0)

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

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