在 DjangoModelFactory 中使用 Django faker 创建的克隆模型字段
Clone model field created with Django faker inside DjangoModelFactory
我使用 Django Faker 生成随机数据,效果很好。
我需要检查一个模型,在特殊情况下两个字段 responsible
和 customer
是相同的。
这是我的工厂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()
希望对你有所帮助!
我使用 Django Faker 生成随机数据,效果很好。
我需要检查一个模型,在特殊情况下两个字段 responsible
和 customer
是相同的。
这是我的工厂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()
希望对你有所帮助!