Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Не выходит множественное наследование в Django [RSS Feed]

#1 Авг. 12, 2012 09:02:47

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Не выходит множественное наследование в Django

Не выходит множественное наследование в Django, выходит ошибка
'ProductDetailView' object has no attribute ‘object’

Это класс родитель

class MyTest(TemplateView):
    def get_context_data(self, **kwargs):
        context = super(MyTest, self).get_context_data(**kwargs)
        context['sections'] = Section.objects.all()
        context['categories'] = Category.objects.all()
        return context

Наследник
class ProductDetailView(DetailView, MyTest):
        pass

Как можно унаследовать MyTest если нужно учесть что DetailView должен быть обязательным?



Отредактировано Saturn (Авг. 12, 2012 09:03:36)

Офлайн

#2 Авг. 12, 2012 11:27:21

adw0rd
От: Санкт-Петербург
Зарегистрирован: 2012-07-28
Сообщения: 107
Репутация: +  8  -
Профиль   Отправить e-mail  

Не выходит множественное наследование в Django

Для DetailView нужен self.object (или для его получения можно использовать self.get_object), определите его в ProductDetailView, пример:

class ProductDetailView(DetailView, MyTest):
    def get_object(self):
        return Product.objects.get(pk=self.kwargs.get('product_id'))

http://habrahabr.ru/post/137530/#get_object




Python, Django, Flask, Git, Emacs, Nginx, MySQL, SphinxSearch, Redis, Linux, FreeBSD
Мой блог, я на GitHub

Офлайн

#3 Авг. 12, 2012 17:02:27

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Не выходит множественное наследование в Django

adw0rd
У меня DetailView работает без метода get_object

class ProductDetailView(DetailView):   
#    model = Product
    queryset = Product.objects.select_related().prefetch_related("colors","sizes")
    context_object_name = "product"
    template_name = "product.html"
, но вот когда наследую MyTest то сразу ошибка.
Я попробовал queryset записать в get_object,
def get_object(self):
   return Product.objects.select_related().prefetch_related("colors","sizes")
В итоге та же ошибка.
(pk у меня в urls приcутствует)



Офлайн

#4 Авг. 12, 2012 17:30:30

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Не выходит множественное наследование в Django

Уже разобрался, сделал совсем по другому.



Офлайн

#5 Авг. 12, 2012 18:42:15

adw0rd
От: Санкт-Петербург
Зарегистрирован: 2012-07-28
Сообщения: 107
Репутация: +  8  -
Профиль   Отправить e-mail  

Не выходит множественное наследование в Django

Saturn:Уже разобрался, сделал совсем по другому.

Как?




Python, Django, Flask, Git, Emacs, Nginx, MySQL, SphinxSearch, Redis, Linux, FreeBSD
Мой блог, я на GitHub

Офлайн

#6 Авг. 12, 2012 18:43:33

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

Не выходит множественное наследование в Django

Так :), зато работает.

class MyTest(object):
    def get_context_data(self, **kwargs):
        context = super(MyTest, self).get_context_data(**kwargs)
        context['sections'] = Section.objects.all()
        context['categories'] = Category.objects.all()
        return context



Отредактировано Saturn (Авг. 12, 2012 18:44:27)

Офлайн

  • Начало
  • » Django
  • » Не выходит множественное наследование в Django[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version