2011-01-30 94 views
3

我通過創建一個繼承自models.Manager的類來創建自定義管理器。管理器只是更改默認的model.objects查詢以添加一些過濾器。現在,我想根據用戶登錄添加一個過濾器。我不想通過代碼更改添加什麼參數搜索,有沒有什麼辦法可以得到請求對象/當前用戶,而不必傳遞給方法?Django自定義管理器請求對象/當前用戶

IM希望這不是一個愚蠢的問題,但我可能只是感到困惑......

這是經理

class pubManager(models.Manager): 

    def get_queryset(self):   
     return pubEnt.objects.filter(state='new') 

    def on_site(self): 
     return pubEnt.objects.filter(state='old', val=0) 
+1

類似的問題:http://stackoverflow.com/questions/2006295/django-custom-managers-how-do-i-return-only-objects-created-by-the在我們的日誌 – gorus 2011-01-30 23:15:01

回答

6

的基本設置,有沒有辦法在Django訪問目前的request沒有通過它。如果沒有它,你可能應該重新考慮你的設計!有權訪問request不應該是管理者方法的要求,因爲它也可以從沒有request對象的地方訪問(例如,考慮從python shell調用方法)。如果您需要訪問當前登錄的用戶,請將user對象傳遞給方法(從request.user),但不要傳遞整個request

+0

+1建議的設計改造 – 2011-01-31 01:17:51