Django 中带自定义过滤器的 list_filter 排除
我想在Django的管理界面侧边栏里添加两个过滤器,第一个过滤器是这样的:https://gist.github.com/739760c7de861f76657f。在这个过滤器里,我想要过滤掉金色的那些以“J”开头的项,而银色的过滤器已经可以用了,它会排除所有不以“J”开头的项。
第二个过滤器稍微复杂一点,我的数据库里有一个字段记录了几个人的体重,我希望能够按体重范围来过滤,比如说体重在50到70之间等等。
我该怎么做呢?非常感谢你们的帮助!
1 个回答
0
搞定了...
class GoldorSilverFilter(DateFieldFilterSpec):
def __init__(self, f, request, params, model, model_admin):
super(GoldorSilverFilter, self).__init__(f, request, params, model, model_admin)
self.links = (
(_('All'), {}),
(_('Gold'), {'%s__regex' % self.field.name: '^[^J]',}),
(_('Silver'), {'%s__istartswith' % self.field.name: 'J',}),
)
def title(self):
return _("Metal")
#return self.field.name
FilterSpec.filter_specs.insert(0, (lambda f: getattr(f, 'goldorsilverfilter', False), GoldorSilverFilter))
我知道返回值不应该只和一个值挂钩,但我不知道该怎么处理... 关于第二点,我用了同一个类,但用了 %s_gte 和 %s_lte
希望这能对某些人有所帮助...