Я работаю над настраиваемым Django Admin FilterSpec (уже описанным в SO # 991926) . My FilterSpec является заменой фильтра по умолчанию для ForeignKey (User) и в основном заменяет список всех пользователей тремя вариантами: все, мое и другие.
Например, если бы я применил настраиваемую спецификацию фильтров к полю 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
, но filterpec использует только первый найденный (gte), отбрасывая другой (lte).
Кто-нибудь знает, как добиться такого отрицательного фильтра с помощью настраиваемого FilterSpec?