如何在Django Admin中创建一个过滤器,只显示整数值介于两个值之间的记录?例如,如果我有一个具有年龄属性的模型Person,并且我只想显示年龄在45到65之间的Person记录。
答案 0 :(得分:1)
你看到的是http://djangosnippets.org/snippets/587/ - 该片段有点旧,但在经过额外的微小改动后效果很好。
上传了修补后的版本答案 1 :(得分: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')
]
答案 2 :(得分: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
答案 3 :(得分:0)
根据another answer for a related question,我了解到有officially documented way since version 1.4。它甚至包括按日期过滤的示例。
尽管如此,sorin answer中的代码段也很有趣,因为它只是将django样式的参数添加到URL,这是一个与官方文档示例不同的解决方案。