如何使用工厂男孩创建一个在用户上有 Fk 的实例?
How to create a instance that have Fk on User with factory boy?
我正在尝试为用户模型模拟具有 FK
的资源对象,但是当我实例化 class o 时出现错误:
bf = BenefitFactory()
AttributeError: type object 'UserFactory' has no attribute '_meta'
工厂:
class UserFactory:
class Meta:
model = User
first_name = factory.Faker('first_name')
last_name = factory.Faker('last_name')
username = factory.Faker('email')
password = factory.LazyFunction(lambda: make_password('pi3.1415'))
is_staff = False
is_superuser = False
class BenefitFactory(factory.django.DjangoModelFactory):
class Meta:
model = Benefit
user = factory.SubFactory(UserFactory)
我也试过这样使用方法RelatedFactory
:
class BenefitFactory(factory.django.DjangoModelFactory):
class Meta:
model = Benefit
user = factory.RelatedFactory(UserFactory, 'user')
但后来我收到错误消息:
django.db.utils.IntegrityError: null value in column "user_id" violates not-null constraint
我如何创建一个 Benefit
与用户相关的对象?
第一个错误是因为您的 UserFactory
没有继承自 factory.django.DjangoModelFactory
!
第二次,RelatedFactory
在 将 Benefit
保存到数据库后运行 ;但是由于您的 Benefit
模型具有 ForeignKey
到 User
,您 必须 在创建 [=14] 时提供 User
的实例=] — 这是使用 SubFactory
完成的,就像在您的初始版本中一样!
因此,修复方法很简单:
class UserFactory(factory.django.DjangoModelFactory):
...
class BenefitFactory(factory.django.DjangoModelFactory):
...
user = factory.SubFactory(UserFactory)
我正在尝试为用户模型模拟具有 FK
的资源对象,但是当我实例化 class o 时出现错误:
bf = BenefitFactory()
AttributeError: type object 'UserFactory' has no attribute '_meta'
工厂:
class UserFactory:
class Meta:
model = User
first_name = factory.Faker('first_name')
last_name = factory.Faker('last_name')
username = factory.Faker('email')
password = factory.LazyFunction(lambda: make_password('pi3.1415'))
is_staff = False
is_superuser = False
class BenefitFactory(factory.django.DjangoModelFactory):
class Meta:
model = Benefit
user = factory.SubFactory(UserFactory)
我也试过这样使用方法RelatedFactory
:
class BenefitFactory(factory.django.DjangoModelFactory):
class Meta:
model = Benefit
user = factory.RelatedFactory(UserFactory, 'user')
但后来我收到错误消息:
django.db.utils.IntegrityError: null value in column "user_id" violates not-null constraint
我如何创建一个 Benefit
与用户相关的对象?
第一个错误是因为您的 UserFactory
没有继承自 factory.django.DjangoModelFactory
!
第二次,RelatedFactory
在 将 Benefit
保存到数据库后运行 ;但是由于您的 Benefit
模型具有 ForeignKey
到 User
,您 必须 在创建 [=14] 时提供 User
的实例=] — 这是使用 SubFactory
完成的,就像在您的初始版本中一样!
因此,修复方法很简单:
class UserFactory(factory.django.DjangoModelFactory):
...
class BenefitFactory(factory.django.DjangoModelFactory):
...
user = factory.SubFactory(UserFactory)