Python 3.x 如何使用factory boy创建具有Fk on用户的实例?
我试图模拟用户模型中具有Python 3.x 如何使用factory boy创建具有Fk on用户的实例?,python-3.x,django-models,factory-boy,Python 3.x,Django Models,Factory Boy,我试图模拟用户模型中具有FK的资源对象,但当我实例化类o时,出现错误: bf = BenefitFactory() AttributeError:类型对象“UserFactory”没有属性“\u meta” 工厂: class UserFactory: class Meta: model = User first_name = factory.Faker('first_name') last_name = factory.Faker('last_nam
FK
的资源对象,但当我实例化类o时,出现错误:
bf = BenefitFactory()
AttributeError:类型对象“UserFactory”没有属性“\u 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:列“user_id”中的null值违反了not null约束
如何创建与用户相关的
利益
对象?第一个错误来自这样一个事实,即您的用户工厂
不是从工厂.django.DjangoModelFactory
继承的
对于第二种情况,RelatedFactory
在将收益保存到数据库后运行;但是,由于您的价值
模型有一个外键
到用户
,因此在创建价值
时,您必须提供用户
的实例-这是使用子工厂
完成的,就像在初始版本中一样
因此,解决办法很简单:
类UserFactory(factory.django.DjangoModelFactory):
...
类BenefitFactory(factory.django.DjangoModelFactory):
...
用户=工厂。子工厂(用户工厂)