의 동작을 제어하는 명명 된 매개 변수 (모델 특성이 아님)를 정의하는 방법이 있습니까? 어쩌면?Django + Factory Boy : factory의 동작을 제어하는 명명 된 매개 변수를 사용하는 방법. + factory.RelatedFactory
예를 들어 : 나는 어쩌면 조건을 통해 RelatedFactory의 생성을 제어하는 명명 된 매개 변수를 만들려면, 내가이 일을 시도 :
# factories.py
class Purchase(factory.DjangoModelFactory):
user = factory.SubFactory('project.factories.UserFactory')
total = uniform(10, 100)
class Meta:
model = Purchase
class UserFactory(factory.DjangoModelFactory):
first_name = factory.Faker('first_name')
last_name = factory.Faker('last_name')
has_purchase = False
purchases = factory.Maybe(
'has_purchase',
yes_declaration=factory.RelatedFactory(Purchase, 'purchase'),
no_declaration=None
)
class Meta:
exclude = ['has_purchase', 'purchases']
model = User
# tests.py
user_without_purchase = UserFactory.create()
user_with_purchase = UserFactory.create(has_purchase=True)
그것은 보인다 그럴 수 없어 이름이 지정된 매개 변수를 통해 has_purchase의 값을 변경하면 항상 False로 설정됩니다. 두 필드가 모두 에 선언되어 있기 때문에 그럴 지 모르겠다. 메타 속성. 그리고 나는 그들을 에 넣어야합니다 또는 그렇지 않으면 DjangoModelFactory은 무결성 오류를 일으키는 데이터베이스에 저장할 때이 필드를 사용하려고합니다.
할 방법이 있습니까?
감사합니다.하지만 "제외"를 제거하고 Params 클래스로 두 필드를 이동하면 "어쩌면"has_purchase 매개 변수를 읽을 수 없습니다 (이유를 모르겠습니다). – user2937998
' 'purchases' 속성을 옮겨야한다고 생각하지 않습니다. 왜냐하면 당신이 말한 것처럼,'Params' 안에'has_purchase'는 읽히지 않을 것입니다. (결국 당신은 여전히 제외가 필요할 것입니다.) 'lazyAttribute'로 시도 했습니까? –
그렇습니다.하지만 LazyAttribute 장고 관리자와도 다음 오류가 발생합니다 : " 'purchases'는이 함수에 대한 잘못된 키워드 인수입니다. – user2937998