django 如何使工厂在创建模型时使用“objects.create_user”而不是“objects.create”

kqhtkvqz  于 2023-01-27  发布在  Go
关注(0)|答案(1)|浏览(173)

有没有办法让工厂示例化示例使用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')
js81xvg6

js81xvg61#

可以覆盖DjangoModelFactory的_create方法

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

相关问题