如何在Django Admin中創建過濾器來僅顯示整數值位於兩個值之間的記錄?例如,如果我有一個具有年齡屬性的模型Person,並且我只想顯示年齡在45到65之間的Person記錄。Django管理員:我如何過濾整數字段中的特定值範圍
6
A
回答
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 snippet或this
1
你要找的http://djangosnippets.org/snippets/587/ - 該片段是有點老了,但額外的小改動後的工作就好了。
我上傳的補丁版本爲https://gist.github.com/1009903
0
基於another answer for a related question,我瞭解到有一個officially documented way做since version 1.4。它甚至包括一個按日期過濾的例子。
儘管如此,在sorin answer片斷也很有趣,因爲它只是增加了Django的風格URL參數,這比官方文檔例子不同的解決方案。
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')
]
更好適合http://webmasters.stackexchange.com/questions – Svisstack 2010-10-30 19:53:42
@Svisstack我不這麼認爲;這是一個編程問題。 – FunLovinCoder 2010-10-30 20:05:50
是的,我知道,但更好的杉木給網站管理員 – Svisstack 2010-10-30 21:31:21