负面自定义Django管理员FilterSpec

时间:2009-11-14 00:26:24

标签: django django-admin

我正在开发自定义Django Admin FilterSpec(已在SO #991926上介绍)。我的FilterSpec是ForeignKey(User)上默认过滤器的替代品,基本上用三个选项替换所有用户的列表,all,mine和其他。

例如,如果我将自定义filterspec应用于字段created_by,则会添加一个管理过滤器,其中包含All,Created by Me和Created by Others。一切正常 除了 负面过滤器,由其他人创建。

我一直试图通过将__not附加到查询中来实现此目的:

def choices(self, cl):
    yield {
            'selected': self.lookup_val == self.user.pk,
            'query_string': cl.get_query_string({'%s__not' % self.field.name: self.user.pk}),
            'display': capfirst('%s Others' % self.field.verbose_name)
        }

Django似乎不支持像这样的否定过滤。我还试过让它做__gte__lte,但filterspec只使用它找到的第一个(gte),丢弃另一个(lte)。

有人知道如何通过自定义FilterSpec实现这样的负过滤器吗?

2 个答案:

答案 0 :(得分:4)

此功能尚未成为Django代码的一部分;计划用于1.2版本。您需要将此修补程序应用于Django代码:http://code.djangoproject.com/ticket/5833

使用get_query_set()的{​​{1}}方法。例如:

FilterSpec

我没有对此进行测试,但我希望你明白这一点。

答案 1 :(得分:0)

不会使用“排除”过滤器进行否定工作吗?