Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MODELS.PY
- # -*- coding: utf-8 -*-
- from django.db import models
- from mptt.fields import TreeForeignKey
- from mptt.models import MPTTModel
- class CatalogFolder(MPTTModel):
- title = models.CharField(max_length=50, verbose_name=u'Название')
- parent = TreeForeignKey('self', blank=True, null=True, related_name='folder', verbose_name=u'Категория')
- display = models.BooleanField(verbose_name=u'Отображается на главной странице')
- def __unicode__(self):
- return self.title
- class Meta:
- verbose_name = u'Категория'
- verbose_name_plural = u'Категории'
- @models.permalink
- def get_absolute_url(self):
- return 'object-list', (), {'folder_id': self.id}
- class CatalogItem(MPTTModel):
- title = models.CharField(max_length=50, verbose_name=u'Название')
- parent = TreeForeignKey(CatalogFolder, blank=True, null=True, related_name='item', verbose_name=u'Категория')
- short_description = models.TextField(blank=True, verbose_name=u'Краткое описание',
- help_text=u'Краткое описание наименования товара')
- description = models.TextField(blank=True, verbose_name=u'Описание', help_text=u'Описание наименования товара')
- def __unicode__(self):
- return self.title
- class Meta:
- verbose_name = u'Наименование'
- verbose_name_plural = u'Наименования'
- @models.permalink
- def get_absolute_url(self):
- return 'item-detail', (), {'pk': self.pk}
- URLS.PY
- # -*- coding: utf-8 -*-
- from catalog.views import ObjectListView, ItemDetailView
- from django.conf.urls.defaults import patterns, include, url
- urlpatterns = patterns('',
- url(r'^$', ObjectListView.as_view(), name="object-list"),
- url(r'^(?P<folder_id>\d+)/$', ObjectListView.as_view(), name="object-list"),
- url(r'^(?P<pk>\d+)/$', ItemDetailView.as_view(), name="item-detail"),
- )
- VIEWS.PY
- # -*- coding: utf-8 -*-
- from django.shortcuts import get_object_or_404
- from django.views.generic.detail import DetailView
- from django.views.generic.list import ListView
- from catalog.models import CatalogFolder, CatalogItem
- class ObjectListView(ListView):
- context_object_name = "object_list"
- template_name = "catalog/object_list.html"
- def get_queryset(self):
- if 'folder_id' not in self.kwargs:
- folders = CatalogFolder.objects.filter(parent=None)
- if folders:
- return folders
- else:
- return CatalogItem.objects.filter(parent=None)
- else:
- self.parent = get_object_or_404(CatalogFolder, pk=self.kwargs['folder_id'])
- folders = CatalogFolder.objects.filter(parent=self.parent)
- if folders:
- return folders
- else:
- return CatalogItem.objects.filter(parent=self.parent)
- def get_context_data(self, **kwargs):
- context = super(ObjectListView, self).get_context_data(**kwargs)
- if 'folder_id' in self.kwargs:
- context['folder'] = get_object_or_404(CatalogFolder, pk=self.kwargs['folder_id'])
- return context
- class ItemDetailView(DetailView):
- context_object_name = "item_detail"
- template_name = "catalog/item_detail.html"
- def get_queryset(self):
- return CatalogItem.objects.all()
Add Comment
Please, Sign In to add comment