2011-05-04 22 views
7

说我有一个模型,它看起来像:如何使一个查询过滤其中一列等于另一个同一个表的行?

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") 
+0

的可能重复[比较对象字段Django的ORM(http://stackoverflow.com/questions/5877856/comparing-object-fields-with-djangos-orm) – 2011-05-04 17:40:08

+0

[如何创建一个Django查询集过滤器比较同一模型中的两个日期字段]可能的重复(http://stackoverflow.com/questions/12380448/how-to-create-a-django-queryset-filter-comparing-两个日期字段,在最相同-MOD) – 2016-06-12 21:27:32

回答

2

是的,可以。你可以use the built in "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,所以我将这个答案留给它。

相关问题