【发布时间】:2010-12-16 12:10:12
【问题描述】:
我正在开发一个自定义的 Django Admin FilterSpec(已经在 SO #991926 上介绍过)。 My FilterSpec 是 ForeignKey(User) 上默认过滤器的替代品,基本上将所有用户列表替换为三个唯一的选择,all、mine 和 others。
例如,如果我将自定义过滤器规范应用于字段created_by,它将添加一个管理员过滤器,其中包含全部、我创建和其他人创建。一切正常除了否定过滤器,由其他人创建。
我一直试图通过将__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 来实现这样的负过滤器吗?
【问题讨论】:
标签: django django-admin