Django - 查询如何查询自己?

时间:2016-10-26 12:27:21

标签: django django-rest-framework django-queryset

我有两个型号

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

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

祝你好运, 鲁本巴罗斯

1 个答案:

答案 0 :(得分:4)

您需要对此查询使用F expressions。 您的查询将采用以下方式:

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