04.03.2010 13:27

  1. Олег Селиванов

    0 ↑
    0 ↓
    Изменяемый list_display я сделал с ходу так.
    list_display = ('first_field', 'second_field',)

    ...

    def get_changelist(self, request, **kwargs):
    from django.contrib.admin.views.main import ChangeList
    changelist = ChangeList
    # Суровая магия питона
    def decorate(f):
    def func(*args, **kwargs):
    args1 = list(args)
    args1[3] = [i for i in args[3] if not (i=='second_field' and not get_request().GET.get('second_field',None)==None)]
    return f(*args1, **kwargs)
    func.decorated=True
    try:
    f.decorated
    return f
    except AttributeError:
    return func
    changelist.__init__ = decorate(changelist.__init__)
    return changelist
    Гики, кто-нибудь сталкивался? Есть более простой способ? :)
  2. Сделать наследника от ChangeList?

  3. Олег Селиванов

    0 ↑
    0 ↓
    Наследника не очень удобно и не красиво при текущей реализации класса.

    Если кто-нибудь будет использовать поправка:
    return copy(changelist)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.