Ich habe ein Projekt mit Clients, Entwurfsschedules, LineItems und Servern.Django Factory Boy über verwandte Eltern iterieren
Jeder Kunde einen einzigen DraftSchedule hat, hat jeder Draftschedule viele Lineitems
Jeder Kunde hat viele Server
Jeder LineItem hat einen Single Server
I Haben Sie einen Code, um LineItems für jeden DraftSchedule mit zufälligen Daten zu generieren. Jedoch ist die resultierenden Lineitem enthalten Server nicht tatsächlich von dem Draftschedule Besitz Kunden
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())
...
Ich mag würde die Server Wahl beschränken setzt nur der Server von dem Parent-Client des Draftschedule im Besitz sein die LineItem für erstellt werden.
So dass, wenn ich LineItemFactory()
Aufruf gibt es ein neues LineItem Objekt und ich kann der Server auf dem LineItem garantee, dass tatsächlich durch die mit dem DraftSchedule
ich folgendes versucht haben:
servers = factory.Iterator(lambda x: x.draftschedule.client.servers.all())
wo client.servers
ist der zugehörige Name, aber die Funktion Iterable ist nicht so bin ich ein bisschen
ist das möglich oder soll ich das Problem aus einem anderen Blickwinkel nähern?