Как заставить фабрику использовать `objects.create_user` вместо `objects.create` при создании модели
Есть ли способ заставить инстанцирование экземпляров из фабрик использовать Model.objects.create_user
вместо Model.objects.create
? Похоже, что user_factory.create
использует последнее, что делает приведенный ниже код успешным, даже если username
является обязательным полем и не передается.
@register
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
@pytest.fixture
def new_user2(user_factory):
return user_factory.create(first_name='abc')
Вы можете переопределить метод _create из DjangoModelFactory
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
@classmethod
def _create(cls, model_class, *args, **kwargs):
manager = cls._get_manager(model_class)
return manager.create_user(*args, **kwargs)
Документацию по этому методу можно найти здесь : https://factoryboy.readthedocs.io/en/stable/reference.html#factory.Factory._create