Как ограничить набор запросов / записей для просмотра на сайте администратора Django? - PullRequest
15 голосов
/ 17 февраля 2010

По умолчанию на сайте администратора Django отображаются все записи связанной модели / таблицы для просмотра. Как я могу показать только записи, которые соответствуют определенным критериям?

Ответы [ 2 ]

27 голосов
/ 17 февраля 2010

В своем определении администратора вы можете определить метод queryset(), который возвращает набор запросов для администратора этой модели. например:

class MyModelAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(MyModelAdmin, self).queryset(request)
        return qs.filter(user=request.user)

Тогда в админе будут видны только объекты с user=request.user.

8 голосов
/ 29 марта 2014

Я знаю, что у этого есть «принятый ответ», но я просто хотел высказать это, поскольку натолкнулся на этот ответ, пытаясь найти что-то другое, и понял, что у меня есть альтернативное решение, которое я часто нахожу и использую, которое дает мне более детальный контроль уровня, чем принятый ответ.

class TestAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "FIELD":
            kwargs["queryset"] = TestModel.objects.filter(test=False)
        return super(TestAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == "FIELDS":
            kwargs["queryset"] = TestModel.objects.filter(test=False)
        return super(TestAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...