【发布时间】:2021-01-11 14:49:10
【问题描述】:
我有这样的工厂:
class PayInFactory(factory.DjangoModelFactory):
class Meta:
model = PayIn
@factory.lazy_attribute
def card(self):
if self.booking_payment and self.booking_payment.payment_type in [bkg_cts.PAYMENT_CARD, bkg_cts.PAYMENT_CARD_2X]:
factory.SubFactory(
CardFactory,
user=self.user,
)
仅当booking_payment 字段在[bkg_cts.PAYMENT_CARD, bkg_cts.PAYMENT_CARD_2X] 中具有payment_type 值时,我才尝试生成字段card
代码进入该语句,但生成后卡片字段为空。
我怎样才能正确地做到这一点?
SubFactory 是否允许在 lazy_attribute 中使用?
如果可能的话,我希望能够像这样修改 PayInFactory 中的 Card 字段:
>>> PayInFactory(card__user=some_user)
PostGeneration 不会这样做,因为我需要这个 Card 在调用创建之前可用。我覆盖了_create,如果可用,它可能会使用该卡。
谢谢!
【问题讨论】:
标签: factory-boy