Faker에 Factory Boy 및 its support을 사용하여 둘 이상의 공급자에서 문자열을 생성하고 싶습니다. 예 :Factory Boy에서 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'))
을하지만이 작동하지 않는 것 : prefix
및 name
을 결합. 예 :
>>> person = PersonFactory()
>>> person.full_name
'<factory.faker.Faker object at 0x7f25f4b09e10> <factory.faker.Faker object at 0x7f25f4ab74d0>'
무엇이 누락 되었습니까? 직접 faker
를 사용하여
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
을 사용할 수 있으며, 한 번에 모든 것을 생성 :
'models.Person' 클래스의 필드는 무엇입니까? 관련 정보입니다. – wim
OK, 도움이 될지 확신 할 수 없지만 지금 추가했습니다. –
@PhilGyford : [this] (https://factoryboy.readthedocs.io/en/latest/index.html#lazy-attributes)가 작동합니까? 모델에 존재하지 않는'prefix'와'name' 클래스 속성을 생성하고 결합하여'full_name'을 생성해야합니다. 원래'Person' 모델에 해당 필드가 없으므로 이것이 오류를 유발할 지 확신 할 수 없습니다. – Blender