Factory boy 如何根据父属性的条件生成子工厂

Factory boy 如何根据父属性的条件生成子工厂,factory-boy,Factory Boy,我有一个这样的工厂: class PayInFactory(factory.DjangoModelFactory): 类元: 型号=PayIn @factory.u属性 def卡(自): 如果self.booking\u payment和self.booking\u payment.payment\u输入[bkg\u cts.payment\u CARD,bkg\u cts.payment\u CARD\u 2X]: 工厂子工厂( 卡片厂, user=self.user, ) 仅当预订支付字段

我有一个这样的工厂:

class PayInFactory(factory.DjangoModelFactory):
类元:
型号=PayIn
@factory.u属性
def卡(自):
如果self.booking\u payment和self.booking\u payment.payment\u输入[bkg\u cts.payment\u CARD,bkg\u cts.payment\u CARD\u 2X]:
工厂子工厂(
卡片厂,
user=self.user,
)
仅当
预订支付
字段在
[bkg\u cts.payment\u card,bkg\u cts.payment\u card\u 2X]中具有
支付类型
值时,我才尝试生成一个字段

代码进入该语句,但生成后卡字段为空

我怎样才能正确地做到这一点?
惰性属性
中是否允许
子工厂

如果可能的话,我希望能够从PayInFactory中修改Card字段,如下所示:

>>PayInFactory(卡用户=某些用户)
PostGeneration
无法使用,因为我需要在调用create之前提供此
卡。我覆盖了
\u create
,如果可用,它可以使用该卡

谢谢

解决方案在于:

class PayInFactory(factory.django.DjangoModelFactory):
类元:
model=models.PayIn
卡=工厂。也许吧(
工厂懒惰属性(
lambda o:o.booking\u payment和o.booking\u payment.payment\u键入。。。
),
工厂子工厂(
卡片厂,
#从CardFactory获取“用户”一级:PayInFactory
user=factory.SelfAttribute(“…user”),
),
)
但是,我还没有测试额外的参数是否实际传递到
CardFactory
,也没有测试在未调用
CardFactory
时会发生什么情况-您必须检查(如果出现意外行为,可能会在项目上引发问题!)。

解决方案在于:

class PayInFactory(factory.django.DjangoModelFactory):
类元:
model=models.PayIn
卡=工厂。也许吧(
工厂懒惰属性(
lambda o:o.booking\u payment和o.booking\u payment.payment\u键入。。。
),
工厂子工厂(
卡片厂,
#从CardFactory获取“用户”一级:PayInFactory
user=factory.SelfAttribute(“…user”),
),
)
但是,我还没有测试额外的参数是否实际传递到
CardFactory
,也没有测试在未调用
CardFactory
时会发生什么-您必须进行检查(如果您出现意外行为,可能会在项目上引发问题!)