2010-09-22 64 views
3

是否有可能使用另一個QuerySet在QuerySet上執行子查詢?使用QuerySet的Django子查詢

例如:

q = Something.objects.filter(x=y).extra(where=query_set2) 
+1

你真的想在這裏做什麼?代碼對我來說毫無意義。你真的想做'query_set2.filter(something__x = y)'嗎? – 2010-09-22 13:02:42

回答

6

簡短的回答:不可以。extra方法並不指望查詢集在傳遞

如果你想想看一點,這是有道理的。查詢集是用於表示數據庫上的獲取操作結果的抽象,並且是將數據庫中的自定義字段附加到查詢集的便捷方式。除非您將extra的基本性質更改爲「使用另一個查詢集進行自定義篩選」,否則這將不起作用。

+0

+1,一如既往,好的和教育的答案。 – 2010-09-23 10:19:37

2

我可以通過兩種方式理解你的問題。

  1. 您可以在過濾器參數指定多個變量 ,爲 例如:

    q = Something.objects.filter(x=y, w=z) 
    
  2. 你想使所謂SQL中的「連接」。這可以通過Django的聚合系統完成,請參閱官方Django Official Documentation