2013-08-27 71 views
0

我有Django模型有問題,我不知道如何創建一個查詢...如何查詢SELECT WHERE EXISTS ......在Django

我有三個類/型號:

  • 一個剛剛名(和id)
  • B有姓名,身份證件和外鍵一個
  • C有外鍵在其他領域到B。

所以每次C有其A(而每一個可以有更多的作爲),但不直接有它的外鍵 - 它要經過B.

我有Cs的一個子集通過了另一個查詢。現在我想選擇一個子集中有C的As。我該怎麼辦?

+2

順便說一句,請務必仔細閱讀[講述](HTTP://計算器.com/about)網站,除了解釋這個網站與通常的論壇(例如投票)不同之外,還會獲得一張閃亮的歡迎徽章;) –

+1

歡迎來到Stack Overflow!你能否在這裏發佈代碼的相關部分[你已經擁有](http://whathaveyoutried.com)? –

+0

恐怕由於授權問題,這是不可能的。 – djangonoob

回答

0

假設c_subset是,你有C對象的子集,以獲得A S的具有這些C小號 你可以做

>>> A.objects.filter(b__c__in = c_subset) 
+0

這個作品但它增加了很多查詢(根據調試工具欄)並減慢了應用程序。你能否加一些解釋它究竟做什麼以及如何做?謝謝 – djangonoob

+0

@djangonoob,它非常直截了當。 '__'跟在關係之後,'__in'看起來在列表中。 Django引用作爲很好的解釋。 – Rohan

+0

不應該添加一個新的查詢,對吧?它不是在循環中或什麼的,當我的視圖被調用/使用/刷新時,它會被調用一次。 – djangonoob