Django Исключить в list_filter с пользовательским фильтром - PullRequest
0 голосов
/ 05 марта 2011

Я пытаюсь сделать 2 фильтра, чтобы они появлялись на боковой панели фильтра администратора django, первый из них следующий https://gist.github.com/739760c7de861f76657f, в этом я хотел бы сделать фильтр, если Gold исключит тот, который начинается с JСеребро уже работает, исключая все, что не начинается с J

Второй фильтр немного сложнее, у меня есть поле в моей БД, которое содержит вес нескольких человек, я хотел бы иметь возможность фильтроватьпо весам ... например, весам от 50 до 70 и так далее ...

Как бы я это сделал ... Большое спасибо как всегда!

1 Ответ

0 голосов
/ 07 марта 2011

Готово ...

class GoldorSilverFilter(DateFieldFilterSpec):
    def __init__(self, f, request, params, model, model_admin):
        super(GoldorSilverFilter, self).__init__(f, request, params, model, model_admin)

        self.links = (
            (_('All'), {}),
            (_('Gold'), {'%s__regex' % self.field.name: '^[^J]',}),
            (_('Silver'), {'%s__istartswith' % self.field.name: 'J',}),
        )

    def title(self):
        return _("Metal")
        #return self.field.name

FilterSpec.filter_specs.insert(0, (lambda f: getattr(f, 'goldorsilverfilter', False), GoldorSilverFilter))

Я знаю, что возврат не должен быть привязан к одному значению, но не знал, что с ним делать ... насчет второго пинга хорошо я использовал то же самоекласс, но использовал% s_ gte и% s _lte

Надеюсь, это кому-нибудь поможет ...

...