Джанго: общий запрос, доступный из всех представлений - PullRequest
0 голосов
/ 19 сентября 2018

Я немного запутался по поводу общего запроса.У меня есть модель с классом Customer information и классом Comment, связанным с этими клиентами.

Я хочу добавить в свой шаблон base.html тег Info, в котором я могу увидеть последние созданные комментарии.Так что это должно быть видно во всех шаблонах / представлениях.

lastCom = Comment.objects.order_by('-id').last()

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

У вас есть подсказка, какопределить запрос только в одном месте и получить к нему доступ в каждом шаблоне, а не определить запрос в каждом представлении?

Что выбрать Менеджеры моделей, ListViews и т. Д.

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете написать собственный контекстный процессор :

def last_comment(request):
    return {'lastComm': Comment.objects.order_by('-id').last()}

В модуле настроек вы должны добавить его к TEMPLATES настройке:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'path.to.processor.last_comment'
            ],
        },
    },
]

Это добавитlastComm переменная для каждого шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...