Как сбросить последовательность по умолчанию для последовательности полей идентификатора в DjangoModelFactory - PullRequest
0 голосов
/ 14 ноября 2018

При заводской настройке:

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

Поле id модели по умолчанию будет начинаться с 1. Я хочу, чтобы идентификатор начинался с большего числа, например, 50000.

Использование UserFactory.reset_sequence(50000) не работает, если вы не добавите эту строку на заводе

id = factory.Sequence(lambda n: n)

У меня есть много тестов, которые зависят от поведения приращения идентификатора по умолчанию, поэтому этот способ неидти.

1 Ответ

0 голосов
/ 14 ноября 2018

Единственный обходной путь, который я смог найти, - это создать объект User, начинающийся с 49999

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

Теперь вы можете сделать

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

Теперь, если идентификатор вашей модели - это автополевам, вероятно, придется изменить базовую схему базы данных или прибегнуть к методу reset_sequence. Как заставить автозапчасти Django начинаться с большего числа

...