2009-11-06 15 views
4

在Django admin中,用戶可以設置限制更改列表中顯示的行的過濾器。我怎樣才能得到一個查詢集實例與查詢字符串定義的過濾器設置?例如,如果我通過?start_date_gte = 2009-11-06,Django管理員將在某處應用qs.filter(start_date__gte ...)。我怎樣才能訪問這樣一個QuerySet?Django Admin:根據GET字符串獲取過濾的查詢集,完全如在更改列表中看到的那樣?

我需要這個,因爲顯然我不想重寫將這些GET參數和filter()作爲QuerySet的代碼。

回答

8

看起來很有意思。但是,我正在討論在Admin中使用該QuerySet。找到答案,見下:

class MyAdmin(admin.ModelAdmin): 
    def changelist_view(self, request, extra_context=None): 
    from django.contrib.admin.views.main import ChangeList 
    cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter, self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self.list_editable, self) 
    # getting query set with same filters like current change list 
    filtered_query_set = cl.get_query_set() 
相關問題