Django Factory Boy迭代相关paren

2024-04-26 03:55:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个项目与客户,绘图时间表,行项目和服务器。在

  • 每个客户机有一个DraftSchedule,每个DraftSchedule有许多行项目

  • 每个客户端都有许多服务器

  • 每个行项目有一个服务器

enter image description here

我有一些代码可以用随机数据为每个DraftSchedule生成行项目。但是,生成的行项目包含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对象,并且我可以保证LineItem上的服务器实际上是由与DraftSchedule关联的客户机拥有的

我试过以下方法:

^{pr2}$

其中client.servers是相关名称,但函数不可编辑,所以我有点卡住了

这是可能的还是我应该从另一个角度来处理这个问题?在


Tags: 项目服务器客户机objectsfactorylineallclass