1

所以我有一个这样的对象:

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 对象?

4

1 回答 1

1

我自己也遇到了一个非常相似的问题(也在 PhoneNumber 工厂):我只是想将伪造者生成的号码限制为仅限手机号码。

我刚刚实现了我自己的伪造者提供程序。这还有一个额外的好处,那就是不受工厂男孩 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')
于 2016-02-19T23:42:05.027 回答