所以我有一个像这样的对象:
class ContactPhoneFactory(factory.Factory):
class Meta:
model = ContactPhoneNumber
number = Faker().phone_number()
type = factory.Faker('random_element', elements=range(5))
我想将'formatted_number'函数应用于'number'
如果我申请:
number = formatted_number(Faker().phone_number())
它不会将函数应用于Faker的输出,它只是将Faker对象作为输入。延迟属性会导致同样的问题。如何将格式化功能应用于faker对象?
答案 0 :(得分:1)
我自己(也在PhoneNumber工厂)遇到了一个非常类似的问题:我只是想将faker产生的数量限制为只有手机号码。
我刚刚实施了自己的faker提供商。这样做的另一个好处就是不会受到工厂男孩API变化的影响(faker对于工厂男孩来说仍然是一个新手)。
我认为它是这样的:
from faker.providers.phone_number import Provider as PhoneProvider
class MyPhoneProvider(PhoneProvider):
@classmethod
def formatted_phone_number(cls):
return formatted_number(cls.phone_number())
factory.Faker.add_provider(MyPhoneProvider)
number = factory.Faker('formatted_phone_number')