[英]In Django tests, why do I need to use <Model>.objects.get() instead of what was returned by <Model>.objects.create()?
[英]How to make factory use `objects.create_user` instead of `objects.create` when creating model
有沒有辦法讓工廠實例化實例使用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')
您可以覆蓋 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)
您可以在此處找到有關此方法的文檔: https://factoryboy.readthedocs.io/en/stable/reference.html#factory.Factory._create
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.