2015-06-06 1 views
2

Я хочу назначить определенное поле объекта другой переменной context. С видом функции на основе, это просто вопрос об объявлении пар ключ: значение:Django CBV DetailView - доступ к объекту для назначения переменной контекста?

context = { 
    'title': my_object.nick_name 
} 

Теперь в моем шаблоне, я могу использовать переменную {{ title }}, и он будет отображать поля объекта nick_name.

Как бы добиться того же, что и на основе классов?

К примеру, у меня есть простой DetailView:

class MyObjDetail(DetailView): 
    model = MyObject 

    def get_context_data(self, **kwargs): 
    context = super(MyObjectDetail, self).get_context_data(**kwargs) 
    context['title'] = ????? <--- right here 
    context['cancel'] = reverse_lazy('my_objs:my_objs_list') 
    return context 

Я хочу, чтобы присвоить переменной {{ title }} быть nick_name поле объекта отображается с этой точки зрения на основе класса. Как мне это сделать?

ответ

4

В DetailView, вы сможете получить доступ к объекту с помощью self.object. Поэтому вы должны сделать:

context['title'] = self.object.nick_name 

Однако, вы можете найти его проще просто получить доступ прозвище через объект в шаблоне:

{{ object.nickname }} 
+0

симпатично! Первый метод работал (это было просто). Второй метод не является жизнеспособным из-за того, как структурируются мои шаблоны. Мне нужно, чтобы все представления передавали переменную заголовка, поэтому я не могу сделать {{object.nick_name}} – Garfonzo