django查询模型A,并从相关模型B中排除一些项目

问题描述 投票:1回答:1

我是Django的新手,我面临的一个问题是我在Stackoverflow上没有答案。基本上,我有2个模型,客户和订单定义如下:

class Client(models.Model):
  name = models.CharField(max_length=200)
  registration_date = models.DateTimeField(default=timezone.now)
  # ..


class Order(models.Model):
  Client = models.ForeignKey(ModelA, on_delete=models.CASCADE, related_name='orders')
  is_delivered = models.BooleanField(default=False)
  order_date = models.DateTimeField(default=timezone.now)
  # ..        

我希望我的QuerySet clients_results满足以下两个条件:

  • 客户端对象满足某些条件(例如,它们的名称以“ d”开头,并且它们在2019年注册,但是可能更复杂)]]
  • 我可以通过使用'related_name'中定义的orders关系访问的订单对象只是满足其他条件的对象;例如,订单未交付,并且在过去6周内完成。
  • 我可以直接在模板中执行此操作,但是我认为这不是正确的方法。另外,我在doc中读到,不应将Order的Base Manager用于此目的。最终,我发现使用Q和F相对question距离我的比较近,但是最后,我将获得order_id,而理想情况下,我希望拥有整个对象。

您能为我提供解决此需求的最佳方法吗?

非常感谢您的帮助!

我是Django的新手,我面临的一个问题是我在Stackoverflow上没有答案。基本上,我有2个模型,分别定义为Client和Order:类Client(models.Model):name = models ....

django django-models orm model
1个回答
0
投票

[您可能应该在此处使用Prefetch(..) object [Django-doc]来获取每个Prefetch(..)的相关未交付的Order,并将它们存储在Client中,但是然后存储在不同的属性中,因为否则会生成混乱。

© www.soinside.com 2019 - 2024. All rights reserved.