0
我有一個客戶端,Draftschedules,LineItems和Servers項目。Django Factory Boy迭代相關的父項
每個客戶端有一個單一的DraftSchedule,每個Draftschedule有很多了LineItem
每個客戶有許多服務器
每個LineItem有一臺服務器
I有一些代碼可以爲隨機數據生成每個DraftSchedule的LineItems。然而,導致了LineItem包含實際上不是由Draftschedule客戶
class LineItemFactory(factory.django.DjangoModelFactory):
class Meta:
model = LineItem
line_item_type = factory.Iterator(LineItemType.objects.all())
draftschedule = factory.Iterator(DraftSchedule.objects.all())
servers = factory.Iterator(Server.objects.all()) # <----- Problem line
cost = factory.LazyAttribute(lambda x: faker.pydecimal(2, 2, positive=True))
detail = factory.LazyAttribute(lambda x: faker.sentence())
...
我想限制服務器的選擇設置爲只能由正在爲創建於訂單的Draftschedule的父客戶端所擁有的服務器所擁有的服務器。
所以,當我打電話LineItemFactory()
它返回一個新的LineItem對象,我可以garantee上LineItem的服務器實際上是由與DraftSchedule
我嘗試了以下相關的客戶端擁有:
servers = factory.Iterator(lambda x: x.draftschedule.client.servers.all())
其中client.servers
是相關的名稱,但功能沒有可迭代的,所以我有點卡住
這是可能的,或者我應該從不同的角度解決這個問題?