【发布时间】:2020-02-18 00:23:45
【问题描述】:
我是 Django 新手,我在 Stackoverflow 上遇到了一个我没有回答的问题。 基本上,我有 2 个模型,Client 和 Order 定义如下:
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 满足以下 2 个条件:
- 客户端对象满足一些条件(例如,它们的名称以“d”开头并且它们在 2019 年注册,但可能更复杂)
- 我可以使用“related_name”中定义的
orders关系访问的订单对象只是满足其他条件的对象;例如,订单在过去 6 周内未交付且已完成。
我可以直接在模板中执行此操作,但我觉得这不是正确的方法。 此外,我在doc 中读到,不应将来自 Order 的 Base Manager 用于此目的。 最后,我使用 Q 和 F 找到了一个与我比较接近的 question,但最后,我会得到 order_id,而理想情况下,我想拥有整个对象。
您能告诉我解决这一需求的最佳方法吗?
非常感谢您的帮助!
【问题讨论】:
标签: django django-models orm model