簡體   English   中英

如何進行查詢以過濾其中一列等於同一表的另一列的行?

[英]How to make a query that filters rows in which one column equals another one of the same table?

假設我有一個 model 看起來像:

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

有什么方法可以進行 django 查詢,該查詢將向我顯示在特定對象/行上的 amount_requested 和 amount_approved 之間存在某種關系的所有請求?

在 SQL 中,它很簡單:

select * from stockrequest where amount_requested = amount_approved;

或者

select * from stockrequest where amount_requested = amount_approved;

在 Django 中,我不確定它是否可以完成,但我想像下面這樣(注意:語法完全組成並且不起作用)。

StockRequest.objects.filter(amount_requested="__amount_approved")
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”object來執行此操作。

語法是:

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

或者

StockRequest.objects.filter(amount_requested__gt=F("amount_approved"))

注意:我寫完問題后立即找到了答案。 由於我在任何地方都沒有在 Stack Overflow 上看到過這個,所以我把它留給了這個答案。

檢查F() function上的文檔:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM