Список изменений администратора Django - ограничить, где поле NULL - PullRequest
0 голосов
/ 13 января 2010

Я настраиваю новое приложение Django, и мне нужно настроить Admin для данной таблицы, ограничив записи, где поле имеет значение NULL. В основном встроенный постоянный фильтр.

Похоже, changelist_view нужно переопределить, но я не уверен, как это изменение будет выглядеть.

Нет кода для включения, поскольку я не переопределяю changelist_view прямо сейчас.

Ответы [ 3 ]

1 голос
/ 13 января 2010

В настоящее время нет действительно хорошего способа сделать это - на самом деле есть открытый билет на Django, запрашивающий возможность настроить то, что QuerySet используется для представлений администратора - см. Билет # 10761, Решение Энтони будет работать в краткосрочной перспективе, но вам, возможно, придется подождать, пока этот билет не будет решен для правильного решения.

1 голос
/ 13 января 2010

Вы можете переопределить менеджер по умолчанию, но у него есть недостаток, заключающийся в том, что вам придется явно указывать оригинальный менеджер во всех ваших запросах:

class MyManager(models.Manager):
    def get_query_set(self):
        return super(MyManager, self).get_query_set().filter(my_field__isnull=False)

class MyModel(models.Model):
   objects = MyManager()
   all_objects = models.Manager()

MyModel.all_objects.all()    # all objects including those having my_field=None
0 голосов
/ 29 апреля 2012

Я решил использовать ограниченный менеджер наборов запросов в качестве объектов. Для ModelAdmin я скопировал queryset () из django / contrib / admin / options.py и изменил _default_manager моим менеджером неограниченного набора запросов. Простой!

...