2017-12-05 5 views
0

Factoryboy를 사용하여 테스트하고 싶은 장고 모델이 있습니다.Factoryboy를 사용하는 모델의 필드 간 종속성

여기의 문제는 필드가 서로 의존한다는 것입니다. 이 경우

class SearchPreferences(models.Model): 
    min_age = models.PositiveSmallIntegerField(null=True) 
    max_age = models.PositiveSmallIntegerField(null=True) 

max_age min_age는보다 작은 수 없다.
class SearchPreferencesFactory(DjangoModelFactory): 
    min_age = FuzzyInteger(30, 90) 
    max_age = FuzzyInteger(SelfAttribute('min_age'), 100) 

어떤이 min_age에서 100 사이의 나에게 max_age 대한 값을 제공해야한다, 내가하려고 한 것입니다,하지만 발생하는 것은 형식 오류입니다 :

TypeError: unsupported operand type(s) for +: 'SelfAttribute' and 'int' 

이 나에게 의미가 있지만, 이 방법을 작동시키는 법을 정말로 모르겠습니다.

누군가 최선의 방법을 설명 할 수 있습니까?

당신은 당신의 MAX_AGE에 LazyAttribute를 사용할 수

답변

2

, 즉 :

class SearchPreferencesFactory(DjangoModelFactory): 
    min_age = FuzzyInteger(30, 90) 
    max_age = LazyAttribute(lambda x: FuzzyInteger(x.min_age, 100).fuzz())