Страницы

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

четверг, 2 января 2020 г.

Django Admin, SELECT по полям

#python #django


Есть модуль 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)


кривой перевод на английский 
    


Ответы

Ответ 1



Вы можете переопределить 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.

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

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