2010-10-30 114 views
6

如何在Django Admin中創建過濾器來僅顯示整數值位於兩個值之間的記錄?例如,如果我有一個具有年齡屬性的模型Person,並且我只想顯示年齡在45到65之間的Person記錄。Django管理員:我如何過濾整數字段中的特定值範圍

+0

更好適合http://webmasters.stackexchange.com/questions – Svisstack 2010-10-30 19:53:42

+3

@Svisstack我不這麼認爲;這是一個編程問題。 – FunLovinCoder 2010-10-30 20:05:50

+0

是的,我知道,但更好的杉木給網站管理員 – Svisstack 2010-10-30 21:31:21

回答

0

我只是想要列表視圖的過濾版本,通過鏈接訪問(比如在列表視圖),例如只查看模型的相關項目,你做這樣的事情:

def admin_view_receipts(self, object): 
    url = urlresolvers.reverse('admin:invoice_%s_changelist'%'receipt') 
    params = urllib.urlencode({'invoice__id__exact': object.id}) 
    return '<a href="%s?%s">Receipts</a>' % (url, params) 
admin_view_receipts.allow_tags = True 
admin_view_receipts.short_description = 'Receipts' 

這將您帶到「Reciepts」列表視圖,但只有那些鏈接到選定的發票。

如果你想顯示在側邊欄的過濾器,你可以try this snippetthis

1

您可以通過使用queryset()函數濾波器領域的一些東西是這樣的...我用了SimpleListFilter

def queryset(self, request, queryset): 
     filt_age = request.GET.get('parameter_name') 
     return queryset.filter(
        age__range=self.age_dict[filt_age] 
       ) 

而且在lookups()創建字典並返回它根據年齡

def lookups(self, request, model_admin): 
    return [ 
     (1, '5-21'), 
     (2, '22-35'), 
     (3, '35-60') 
    ]