如何进行一个查询来过滤其中一列等于同一表中另一列的行?

2024-10-01 07:45:46 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个模型,它看起来像:

class StockRequest(models.Model):
    amount_requested = models.PositiveIntegerField(null=True)
    amount_approved = models.PositiveIntegerField(null=True) 

有没有办法做一个django查询来显示在某个特定对象/行上请求的金额和批准的金额之间存在某种关系的所有请求?在

在SQL中,它很简单:

^{pr2}$

或者

^{pr2}$

在Django中,我不确定是否可以实现,但我可以想象如下(注意:语法完全是虚构的,不起作用)。在

StockRequest.objects.filter(amount_requested="__amount_approved")

Tags: django模型truemodelmodels金额amountnull
3条回答
from django.db.models import F
StockRequest.objects.filter(amount_requested=F("amount_approved"))

http://docs.djangoproject.com/en/dev/topics/db/queries/#filters-can-reference-fields-on-the-model

检查F()函数上的docs

是的,你可以。您可以use the built in "F" object来执行此操作。在

语法是:

from django.db.models import F
StockRequest.objects.filter(amount_requested=F("amount_approved"))

或者

^{pr2}$

注:我写完问题后马上找到了答案。因为我在任何地方都没有看到堆栈溢出,所以我把这个答案留给它。在

相关问题 更多 >