gpt4 book ai didi

python - 在Factory Boy中,如何连接Faker创建的字符串?

转载 作者:行者123 更新时间:2023-12-02 11:20:57 26 4
gpt4 key购买 nike

我想使用Factory Boyits support对于 Faker从多个提供商生成字符串。例如组合前缀名称:

# models.py
from django.db import models

class Person(models.Model):
full_name = models.CharField(max_length=255, blank=False, null=False)


# factories.py
import factory

class PersonFactory(factory.Factory):
class Meta:
model = models.Person

full_name = '{} {}'.format(factory.Faker('prefix'), factory.Faker('name'))

但这似乎不起作用。例如:

>>> person = PersonFactory()
>>> person.full_name
'<factory.faker.Faker object at 0x7f25f4b09e10> <factory.faker.Faker object at 0x7f25f4ab74d0>'

我错过了什么?

最佳答案

您可以使用(基本上未记录的)exclude 属性来使您的第一种方法起作用:

class PersonFactory(factory.Factory):
class Meta:
model = Person
exclude = ('prefix', 'name')

# Excluded
prefix = factory.Faker('prefix')
name = factory.Faker('name')

# Shows up
full_name = factory.LazyAttribute(lambda p: '{} {}'.format(p.prefix, p.name))

您也可以只使用 factory.LazyAttribute 并直接使用 faker 一次性生成所有内容:

from faker import Faker

fake = Faker()

class PersonFactory(factory.Factory):
class Meta:
model = Person

# Shows up
full_name = factory.LazyAttribute(lambda p: '{} {}'.format(fake.prefix(), fake.name()))

这种方法的缺点是您无法轻松访问此人的前缀或姓名。

关于python - 在Factory Boy中,如何连接Faker创建的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46099981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com