Как заставить фабрику использовать `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

Вернуться на верх