2013-08-06 29 views
0

我是django,python和tastypie的新手。我創建了一個API,其中有很多資源,每個資源都有一些其他相關的資源。當我打電話給某個特定的資源時,我想獲得相關的對象。爲此在tastypie modelresources中,我使用_set和lambda函數連接了所有使用ToOneField和ToManyField的資源。但現在的問題是,如果我打電話給頂級父資源列表,它會提取完整的數據庫並將其作爲響應返回。例如,我有一個主題資源,一個問題資源和答案資源,其中問題與主題相關,答案與問題相關。如果我請求可用的主題實例,它將返回所有主題,與每個主題相關的所有問題以及與每個問題相關的所有答案。我想要做什麼,如果如果我發送請求單個資源或詳細視圖,那麼它應該返回相關的對象。對於list方法應該只返回特定modelresource的對象....當我請求一個對象列表時,我該如何排除一些tastypie model資源字段

告訴我eguys我怎麼能做到這一點

回答

2

你可以完成你想要使用的是什麼了API領域的use_in參數。它看起來像:

related_fiedl1 = ToOneField(..., use_in='detail') 
related_fiedl2 = ToManyField(..., use_in='detail') 

你可以通過傳遞一個可調用(比如顯示一個領域,如果一個參數出現在請求中)在更復雜的情況下使用它。

另一件不是你所要求的,但可能更一致的是,使用full_listfull_detail參數,所以關係字段將顯示列表中的資源url,以及詳細資料中的完整資源表示。

+0

嘿Facundo Olano,請你給我一個例子,我如何在我的資源中使用use_in。我嘗試過,但它不適用於我,或者我不明白我如何以正確的方式使用它來實現我的目標 –

+0

我編輯了我的答案。我習慣於將可調用函數傳遞給use_in,我忘記了只能在這些情況下傳遞'detail'或'list'來使用該字段。 –

相關問題