Найти - Пользователи
Полная версия: Не выходит множественное наследование в Django
Начало » Django » Не выходит множественное наследование в Django
1
Saturn
Не выходит множественное наследование в 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 должен быть обязательным?
adw0rd

Для 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

Saturn
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утствует)
Saturn
Уже разобрался, сделал совсем по другому.
adw0rd

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

Как?

Saturn
Так :), зато работает.
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB