Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用factory boy创建具有Fk on用户的实例?_Python 3.x_Django Models_Factory Boy - Fatal编程技术网

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):
...
用户=工厂。子工厂(用户工厂)