Clients、Draftschedules、LineItems、および Servers を含むプロジェクトがあります。
各クライアントには 1 つの DraftSchedule があり、各 Draftschedule には多くの Lineitem があります
各クライアントには多数のサーバーがあります
各 LineItem には単一のサーバーがあります
ランダム データを使用して DraftSchedule ごとに LineItems を生成するコードがいくつかあります。ただし、結果の LineItems には、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())
...
サーバー選択セットを、Lineitem が作成されている Draftschedule の親クライアントが所有するサーバーのみに制限したいと思います。
これを呼び出すLineItemFactory()
と、新しい LineItem オブジェクトが返され、LineItem のサーバーが DraftSchedule に関連付けられたクライアントによって実際に所有されていることを保証できます。
私は次のことを試しました:
servers = factory.Iterator(lambda x: x.draftschedule.client.servers.all())
関連する名前はどこにclient.servers
ありますが、関数は反復可能ではないため、少し行き詰まっています
これは可能ですか、それとも別の角度から問題にアプローチする必要がありますか?