Не могу добавить extra_context в ListView - PullRequest
2 голосов
/ 07 февраля 2012

После изучения учебника по Django у меня есть базовая версия моего приложения, и теперь я пытаюсь добавить некоторые данные в один из шаблонов.Я думал, что мог бы добавить это, используя extra_context, но я что-то упустил (вероятно, очевидно, так как я новичок в Django).Это то, что я имею в urls.py:

url(r'^$', ListView.as_view(
        queryset=Solicitation.objects.order_by('-modified'),
        context_object_name='solicitationList',
        template_name='ptracker/index.html',
        extra_context=Solicitation.objects.aggregate(Sum('solicitationValue'),Sum('anticipatedValue')),
        name='index',
        )),

моего приложения. Я получаю сообщение об ошибке: TypeError:
ListView () получил недопустимое ключевое слово 'extra_context'

What Iнужно как-то вывести эти суммы в шаблон, чтобы я мог их отобразить.Как я могу сделать это правильно или легко?

Ответы [ 2 ]

10 голосов
/ 07 февраля 2012

extra_context требует указания, например:

extra_context={'solicitations': Solicitation.objects...}

РЕДАКТИРОВАТЬ

Извините, на самом деле, я не думаю, что as_view фактически поддерживает этот kwarg,Вы можете попробовать это, но, скорее всего, вам нужно будет создать подкласс вида и переопределить get_context_data, как описывает документ :

def get_context_data(self, **kwargs):
    # Call the base implementation first to get a context
    context = super(PublisherBookListView, self).get_context_data(**kwargs)
    # Add in the publisher
    context['publisher'] = self.publisher
    return context
0 голосов
/ 20 ноября 2013

Django, 1.5, похоже, не поддерживают extra_context в as_view. Но вы можете определить подкласс и переопределить get_context_data. Я думаю, что это лучше:

class SubListView(ListView):
    extra_context = {}
    def get_context_data(self, **kwargs):
        context = super(self.__class__, self).get_context_data(**kwargs)
        for key, value in self.extra_context.items():
            if callable(value):
                context[key] = value()
            else:
                context[key] = value
        return context

Тем не менее, extra_context должен быть диктом.

Надеюсь, это поможет:)

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