Страницы

Поиск по вопросам

вторник, 15 января 2019 г.

Django Admin, SELECT по полям

Есть модуль UserTask в которой есть очень тяжелые поля и они тормозят запрос, как можно убрать их из запроса для Django Admin.
Они не выводятся на страницу, но Django использует примерно такой запрос:
SELECT * FROM UserTask;
А нужно:
SELECT id, name, is_user FROM UserTask;
P.S. Нужно убрать их именно в админке, вот регистрация модели:
class UserTaskAdmin(admin.ModelAdmin): list_filter = ('id', 'name') list_display = ('id', 'name')
admin.site.register(UserTask, UserTaskAdmin)
кривой перевод на английский


Ответ

Вы можете переопределить get_queryset() и использовать only() метод:
class UserTaskAdmin(admin.ModelAdmin): list_filter = ('id', 'name') list_display = ('id', 'name')
def get_queryset(self, request): return self.model.objects.only('id', 'name')
Немного изменил оригинал, там использовался UserTask.objects.only('id', 'name'), за места self.model.objects.only('id', 'name'), что ограничивало повторное использования кода с другими моделями.
Оригинал от @neverwalkaloner

Комментариев нет:

Отправить комментарий