2017-12-05 5 views
0

私はFactoryboyを使用してテストしたいDjangoモデルを持っています。FactoryBoyを使用したモデルのフィールド間の依存関係

ここでの問題は、フィールドがお互いに依存していることです。この場合

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

max_agemin_age次いで小さくすることができません。

class SearchPreferencesFactory(DjangoModelFactory): 
    min_age = FuzzyInteger(30, 90) 
    max_age = FuzzyInteger(SelfAttribute('min_age'), 100) 

これは私が私にmin_ageと100の間max_ageの値を与えるべきか、実行しようとしましたが、何が起こることはTypeErrorでてきたものである:

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

これは私には理にかなっているが、私は本当にこれを動作させる方法を理解できませんか?

誰かがここで最善の方法を説明できますか?

答えて

2

あなたはつまり、あなたのmax_ageの上LazyAttributeを使用することもできます。

class SearchPreferencesFactory(DjangoModelFactory): 
    min_age = FuzzyInteger(30, 90) 
    max_age = LazyAttribute(lambda x: FuzzyInteger(x.min_age, 100).fuzz()) 
関連する問題