从具有2个或更多分离度的Django模型查询相关数据

时间:2017-10-12 01:06:26

标签: python django django-models django-templates

假设我有以下Django模型:

class Client(models.Model):
    name = models.CharField(max_length=250)

class Staff(models.Model):
    name = models.CharField(max_length=250)

class Agent(models.Model):
    staff = models.ForeignKey(Staff, on_delete=models.CASCADE)

class Writer(models.Model):
    staff = models.ForeignKey(Staff, on_delete=models.CASCADE)

class Order(models.Model):
    client = models.ForeignKey(Client, on_delete=models.CASCADE)
    agent = models.ForeignKey(Agent, on_delete=models.CASCADE)
    writer = models.ForeignKey(Writer, on_delete=models.CASCADE)

模型之间的关系具有以下条件:

  • 每个订单可能只有一个客户
  • 每个订单可能只有一个代理商
  • 每个订单可能只有一位作家
  • 客户可能有多个订单
  • 代理可能有多个订单
  • 作家可能已经写了多个订单

鉴于这些模型和参数,我如何获得过去曾与特定客户合作过的所有代理商或所有作家的清单?

我不知何故需要从[客户]>查询[所有订单]> [每个订单代理]使用Python / Django。

1 个答案:

答案 0 :(得分:0)

以下是为所有代理执行此操作的可能方法:

orders = Order.objects.filter(client=client)

agents = []
for order in orders:
    agents.append(order.agent)