lmi*_*asf 1 python django factory-boy
我需要使用factory boy. 我有以下模型:
class Fabric(models.Model):
title = models.CharField(max_length=200, blank=True)
description = models.CharField(max_length=200, blank=True)
price = models.DecimalField(decimal_places=2, max_digits=10, null=True, blank=False)
Run Code Online (Sandbox Code Playgroud)
我需要基于这个模型创建一个工厂,我希望价格在 1 到 100 之间有一个随机值。
class FabricFactory(DjangoModelFactory):
class Meta:
model = Fabric
title = factory.Faker('name')
description = factory.Faker('catch_phrase')
price = random.randrange(MIN_PRICE, MAX_PRICE + 1)
Run Code Online (Sandbox Code Playgroud)
问题在于我总是为每个实例获得相同的价格。
Gon*_*alo 10
您也可以使用 python 提供程序。
class MyModel(factory.django.DjangoModelFactory)
number_field = factory.Faker('pyint', min_value=0, max_value=1000)
class Meta:
model = SomeModel
Run Code Online (Sandbox Code Playgroud)
我能够通过使用惰性属性( factory.LazyAttribute)来解决这个问题。从文档:
大多数工厂属性可以使用定义工厂时评估的静态值添加,但某些属性(例如其值从其他元素计算的字段)需要在每次生成实例时分配值。
class FabricFactory(DjangoModelFactory):
class Meta:
model = Fabric
title = factory.Faker('name')
description = factory.Faker('catch_phrase')
price = factory.LazyAttribute(random.randrange(MIN_PRICE, MAX_PRICE + 1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4422 次 |
| 最近记录: |