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