Django - 查询如何查询自身?

标签 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

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

最好的问候, 鲁本·巴罗斯

最佳答案

您需要使用 F expressions对于这个查询。 您的查询将如下所示:

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

关于Django - 查询如何查询自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262311/

相关文章:

django - 在模板中获取用户组

python - 如何在 Django REST Framework 中使用默认的日期时间序列化?

python - Django-Filters 空字符串查询参数导致验证错误

python - 在 Django 中查询多对多关系

python - 基于自定义函数的Django过滤器

mysql - 过滤多个表中作为外键存在的记录

python - 从字段内获取 Django 字段值

python - QueryDict 和 MultiValueDict 有什么区别?

python - Django REST Framework 序列化程序返回对象而不是数据

python - Django 原始查询 - 使用点符号遍历相关模型的字段