在Django使用factory_boy时,我如何做到这一点?在
在模型.py在
class TestModel(models.Model):
name = CharField()
order = IntegerField()
在食谱.py在
^{pr2}$在测试.py在
recipes.TestModelFactory.create_batch(4, order=+10)
或者
recipes.TestModelFactory.create_batch(4, order=seq(10))
或者沿着这些思路来实现这个结果:
TestModel.objects.all().values_list('order', flat=True)
[10, 20, 30, 40]
更新
泰@特林切特的主意。所以我想一个解决办法是:
class TestModelFactory(factory.django.DjangoModelFactory):
class Meta:
model = TestModel
name = factory.LazyAttribute(lambda o: faker.word().title())
order = factory.Sequence(lambda n: n * 10)
但这总是在我的所有对象上设置序列,而我无法设置我想要的值。在
解决方法是:
^{pr2}$然后在测试中:
recipes.MenuItemFactory.reset_sequence(1)
recipes.MenuItemFactory.create_batch(
4,
parent=self.section_menu,
order=factory.Sequence(lambda n: n * 10)
)
这会给我我想要的结果。但这会重置所有序列。我希望它能够动态地设置顺序,只是为了顺序。在
目前没有回答
相关问题 更多 >
编程相关推荐