在 DjangoModelFactory 中使用 Django faker 创建的克隆模型字段

Clone model field created with Django faker inside DjangoModelFactory

我使用 Django Faker 生成随机数据,效果很好。

我需要检查一个模型,在特殊情况下两个字段 responsiblecustomer 是相同的。

这是我的工厂class:

class FirstQuoteRequest(DjangoModelFactory):

    label = Faker("sentence")
    description = Faker("sentences")
    customer = SubFactory(UserFactory)
    responsible = customer

通过键入 responsible = customer,我想我会添加客户价值的克隆,但在这种情况下,它是 returns 随机值的函数的克隆,这不是我想要的.

我想像这样使用 @post_generation

    @post_generation
    def responsible(self, create: bool, extracted: Sequence[Any], **kwargs):
        self.responsible = self.customer
        self.save()

但它引发了完整性错误。这是在客户和负责人之间实现这种平衡的一种方式吗?哪一个?

问题出在我的方法名称不应该等于字段名称。所以解决方案是:

class FirstQuoteRequest(DjangoModelFactory):

    label = Faker("sentence")
    description = Faker("sentences")
    customer = SubFactory(UserFactory)
    responsible = customer

    @post_generation
    def clone_customer(self, create: bool, extracted: Sequence[Any], **kwargs):
        self.responsible = self.customer
        self.save()

希望对你有所帮助!