简体   繁体   English

如何让工厂在创建 model 时使用 `objects.create_user` 而不是 `objects.create`

[英]How to make factory use `objects.create_user` instead of `objects.create` when creating model

Is there a way to make instantiating instances from factories use Model.objects.create_user instead of Model.objects.create ?有没有办法让工厂实例化实例使用Model.objects.create_user而不是Model.objects.create It seems that user_factory.create uses the latter, which makes the below code succeed even though username is a required field and not passed.似乎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')

You can override _create method of DjangoModelFactory您可以覆盖 DjangoModelFactory 的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)

You can find the documentation about this method here: https://factoryboy.readthedocs.io/en/stable/reference.html#factory.Factory._create您可以在此处找到有关此方法的文档: https://factoryboy.readthedocs.io/en/stable/reference.html#factory.Factory._create

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM