【发布时间】:2021-08-30 21:16:21
【问题描述】:
我有一个Purchase 模型和一个PurchaseInfo 模型。 PurchaseInfo 有一个指向 Purchase 的外键。我正在尝试修改现有的 Purchase 工厂,它将同时使用 RelatedFactory 创建 PurchaseInfo,因为它是反向外键关系。唯一的事情是我想使用污点,以便我可以控制PurchaseInfo 中字段的值。通常,当我创建Purchase 之类的p = PurchaseFactory() 时,PurchaseInfo 会在其中创建空字段。如果我像p = PurchaseFactory(info=True)一样创建Purchase,这样我就可以通过Taint获得字段修改,PurchaseInfo根本不会创建。
我有一种感觉,将RelatedFactory 放入 Taint 是不可行的。这样做的正确方法是什么?
型号:
class Purchase(Model):
...
class PurchaseInfo(Model):
purchase = models.ForeignKey(Purchase, on_delete=models.CASCADE, unique=True, db_index=True)
lock = DateTimeField(null=True)
lock_by = ForeignKey(...
class PurchaseInfoFactory(DjangoModelFactory):
class Meta:
model = PurchaseInfoField
lock = None
lock_by = None
class PurchaseFactory(DjangoModelFactory):
class Meta:
model = Purchase
info = RelatedFactory(PurchaseInfoFactory,
factory_related_name='purchase')
class Params:
info = Trait(internalfield=RelatedFactory(PurchaseInfoFactory,
factory_related_name='purchase',
lock=timezone.now() - relativedelta(months=1),
lock_by=SubFactory(UserFactory, user_id=1)))
【问题讨论】:
-
你试过
SubFactory这个吗?? -
尝试为特征使用不同的名称
-
@bdbd,你的意思是“info =”行,对吧?我确实试过了。
-
@Sabil 我认为这里不能使用
SubFactory。 SubFactory 将在父级之前创建,我无法将父级的 ID 传递给它,因为它不存在。
标签: python django factory-boy