使用 Factoryboy 模型中字段之间的依赖关系

Dependency between fields in model using Factoryboy

我有一个 Django 模型,我想使用 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:

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

这对我来说很有意义,但我真的不知道如何让它发挥作用?

谁能解释一下最好的方法是什么?

您可以在 max_age 上使用 LazyAttribute,即:

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