工厂\u男孩未在特性中创建相关工厂

2024-10-01 05:04:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Purchase模型和一个PurchaseInfo模型PurchaseInfo有一个指向Purchase的外键。我正在尝试修改Purchase的现有工厂,该工厂将同时使用RelatedFactory创建PurchaseInfo,因为它是一个反向外键关系。唯一的问题是我想使用一个污点,这样我就可以控制PurchaseInfo中字段的值。通常,当我创建一个类似Purchasep = PurchaseFactory()时,PurchaseInfo会在其中创建空字段。如果我创建一个类似Purchasep = PurchaseFactory(info=True),这样我就可以通过这个污点获得字段修改,那么PurchaseInfo根本就不会创建

我有一种感觉,把RelatedFactory置于污点中不是一条路。正确的方法是什么

型号:


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)))

Tags: 模型infotruelockby工厂purchase外键
1条回答
网友
1楼 · 发布于 2024-10-01 05:04:13

我不喜欢我的解决方案,但我是这么做的。我导出了一个二级工厂和一个备用关联工厂。这很有效

class PurchaseFactory(DjangoModelFactory):
    class Meta:
        model = Purchase

    info = RelatedFactory(PurchaseInfoFactory,
                          factory_related_name='purchase')
class InfoPurchaseFactory(DjangoModelFactory):
    class Meta:
        model = Purchase

    info = Trait(internalfield=RelatedFactory(PurchaseInfoFactory,
                                                  factory_related_name='purchase',
                                                  lock=timezone.now() - relativedelta(months=1),
                                                  lock_by=SubFactory(UserFactory, user_id=1)))

相关问题 更多 >