【问题标题】:Dependency between fields in model using Factoryboy使用Factoryboy的模型中字段之间的依赖关系
【发布时间】:2017-12-05 20:57:47
【问题描述】:

我有一个 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'

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

有人能解释一下这里最好的方法是什么吗?

【问题讨论】:

    标签: django python-3.x factory-boy


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多