假设你有这些Django模型的关联方式:
class Service:
restaurant = models.ForeignKey(Restaurant)
hist_day_period = models.ForeignKey(DayPeriod)
class DayPeriod:
restaurant = models.ForeignKey(Restaurant)
我想使用工厂创建一个Service
对象。它应该创建所有3个模型,但使用相同的餐厅。在
使用此代码:
^{pr2}$工厂男孩将创建两个不同的餐厅:
s1 = ServiceFactory.create()
s1.restaurant == s1.hist_day_period.restaurant
>>> False
有什么办法吗?我不清楚是否应该使用related factors
而不是SubFactory
来完成这一任务。在
与使用
SubFactory
不同,您可以将Iterator
与查询集一起使用。在例如:
不过,我不确定创建
Restaurant
的最佳位置。在我们的代码库中,我重写DiscoverRunner
并在那里创建用于此目的的模型(在setup_databases
中,这感觉像一个黑客)。在我反复讨论了从工厂内部创建相关对象或FK对象,还是单独创建这些对象。正如您已经发现的那样,您不一定每次打电话给
ServiceFactory()
时都希望找一家新餐馆。我认为你最好保持它们的简单性,以牺牲使用稍微更冗长的调用代码为代价。在注释掉
restaurant = factory.SubFactory
行,然后按如下方式调用工厂:或者,如果您确实希望使用工厂创建餐厅,但您只希望创建一个餐厅:
^{pr2}$IOTW,让你的工厂尽可能少地做假设,这样你就可以灵活地从测试或系统的不同部分建立你需要的任何数据结构。在
您想使用factoryboy的parents和{}
有了这个测试程序我得到了
^{pr2}$相关问题 更多 >
编程相关推荐