栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

按Null筛选Django Admin /不是Null

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

按Null筛选Django Admin /不是Null

我最终在这里混合使用了最佳解决方案和此代码段。

但是,我不得不稍微调整一下代码片段,删除字段类型限制并添加新的field_path,该功能最近在1.3中添加。

from django.contrib.admin.filterspecs import FilterSpecfrom django.db import modelsfrom django.utils.safestring import mark_safefrom django.utils.translation import ugettext as _class NullFilterSpec(FilterSpec):    #fields = (models.CharField, models.IntegerField, models.FileField)    @classmethod    def test(cls, field):        #return field.null and isinstance(field, cls.fields) and not field._choices        return field.null and not field._choices    #test = classmethod(test)    def __init__(self, f, request, params, model, model_admin, field_path=None):        super(NullFilterSpec, self).__init__(f, request, params, model, model_admin, field_path)        self.lookup_kwarg = '%s__isnull' % f.name        self.lookup_val = request.GET.get(self.lookup_kwarg, None)    def choices(self, cl):        # bool(v) must be False for IS NOT NULL and True for IS NULL, but can only be a string        for k, v in ((_('All'), None), (_('Has value'), ''), (_('Omitted'), '1')): yield {     'selected' : self.lookup_val == v,     'query_string' : cl.get_query_string({self.lookup_kwarg : v}),     'display' : k }# Here, we insert the new FilterSpec at the first position, to be sure# it gets picked up before any otherFilterSpec.filter_specs.insert(0,    # If the field has a `profilecountry_filter` attribute set to True    # the this FilterSpec will be used    (lambda f: getattr(f, 'isnull_filter', False), NullFilterSpec))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号