factory_boy 및 faker를 사용하여 임의의 데이터로 Django 프로젝트를 채우려고합니다. 그러나, UserFactory 객체의 인스턴스를 만들려고 할 때 TypeError 오류가 발생했습니다 : 1 개의 필수 위치 인수가 없습니다 : 'a'.TypeError : <lambda>() 누락 1 필수 위치 인수 :
fake_date 및 date_joined 속성과 해당 람다 함수와 관련이있는 것으로 보입니다. 내가 찾은 튜토리얼 몇 개가 Factory 객체에 대해 이렇게 람다 함수를 사용하여 배치했지만 실제로 작동하지 않습니다.
import datetime
import factory
import faker
from dataStoreApp.models import Category, Goal, Transaction
from django.contrib.auth.models import User
fake = faker.Faker()
class CategoryFactory(factory.django.DjangoModelFactory):
class Meta:
model = Category
name = factory.Iterator(['Category1', 'Category2',
'Category3', 'Category4',
'Category5', ], cycle=False)
class UserFactory(factory.django.DjangoModelFactory):
FACTORY_HIDDEN_ARGS = ('fake_date',)
class Meta:
model = User
fake_date = factory.LazyAttribute(
lambda a: datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
date_joined = factory.LazyFunction(lambda a: a.fake_date)
first_name = factory.LazyAttribute(lambda b: fake.first_name())
last_name = factory.LazyAttribute(lambda c: fake.last_name())
email = factory.LazyAttribute(lambda e: 'test' + '@test_email.com')
class GoalFactory(factory.DjangoModelFactory):
class Meta:
model = Goal
class TransactionFactory(factory.django.DjangoModelFactory):
class Meta:
model = Transaction
나는 다음과 같은 오류를 얻을 파이썬 콘솔에서 실행 :
당신은 코드lambda a: ....
에 인수 a
와 함수를 생성
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\Python36\lib\site-packages\factory\base.py", line 568, in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
File "C:\Program Files\Python36\lib\site-packages\factory\base.py", line 505, in _generate
return step.build()
File "C:\Program Files\Python36\lib\site-packages\factory\builder.py", line 272, in build
step.resolve(pre)
File "C:\Program Files\Python36\lib\site-packages\factory\builder.py", line 221, in resolve
self.attributes[field_name] = getattr(self.stub, field_name)
File "C:\Program Files\Python36\lib\site-packages\factory\builder.py", line 363, in __getattr__
extra=declaration.context,
File "C:\Program Files\Python36\lib\site-packages\factory\declarations.py", line 59, in evaluate
return self.function()
TypeError: <lambda>() missing 1 required positional argument: 'a'
'FACTORY_' 메소드는 [2.5에서 삭제되었습니다] (http://factoryboy.readthedocs.io/en/latest/changelog.html#upgrading). – Alasdair