Django - 查询如何查询自身?

Django - How does a query query itself?

我有两个模型

Product
  id:
  delivery_date: DateTimeField
  contract: FK

Contract
  id:
  safety_days: IntegerField

我需要让产品在接下来的 X 天内交付。这个X在合约中定义为safety_days.

products = Product.objects.filter(
   Q(delivery_date__lte=(datetime.datetime.now() + timedelta(days=contract__safety_days)))
)

但是,我做不到:

days = contract__safety_days

我不知道如何在查询中引用对象本身来动态执行此操作。

此致, 鲁本·巴罗斯

您需要使用 F expressions 进行此查询。 您的查询将如下所示:

products = Product.objects.filter(
    Q(delivery_date__lte=(datetime.datetime.now() + timedelta(days=F('contract__safety_days'))))
)