Надо сделать : https://sait.ru/okna-pvh/category (в зависимости от той категории к которой привязан продукт)/product(в зависимости от выбранного продукта)
models.py:
from django.db import models
from django.core.urlresolvers import reverse
# Модель категории
class Category(models.Model):
name = models.CharField(verbose_name='Производитель окна', max_length=200, db_index=True)
slug = models.SlugField(verbose_name='Имя страницы', max_length=200, db_index=True, unique=True, null=True, blank=True)
created = models.DateTimeField(verbose_name='Дата и время создания', auto_now_add=True, null=True, blank=True)
updated = models.DateTimeField(verbose_name='Дата и время редоктирования', auto_now=True, null=True, blank=True)
def get_absolute_url(self):
return reverse('okna:ProductListByCategory', args=[self.slug])
class Meta:
ordering = ['name']
verbose_name = 'Производитель окна'
verbose_name_plural = 'Производители окна'
def __str__(self):
return self.name
# Модель продукта
class Product(models.Model):
category = models.ForeignKey(Category, related_name='products', verbose_name="Производитель окна")
name = models.CharField(max_length=200, db_index=True, verbose_name="Модель окна")
slug = models.SlugField(max_length=200, db_index=True, verbose_name='Имя страницы')
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="Цена")
shistv = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="Ширина створки мм.", null=True, blank=True)
shistp = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="Ширина стеклопакета мм.", null=True, blank=True)
vozkam = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="Воздушные камеры", null=True, blank=True)
soptepl = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="Сопротивление теплопередачи м2 С/Вт.", null=True, blank=True)
kratkopis = models.TextField(blank=True, verbose_name="Краткое описание")
preimush = models.TextField(blank=True, verbose_name="Преимущества")
imagetov = models.ImageField(upload_to='products/%Y/%m/%d/', blank=True, verbose_name="Изображение окна")
imageokna = models.ImageField(upload_to='products/%Y/%m/%d/', blank=True, verbose_name="Фото окна")
polopisanie = models.TextField(blank=True, verbose_name="Полное описание окна")
urlvideo = models.CharField(max_length=200, db_index=True, verbose_name="Ссылка на видео", null=True, blank=True)
available = models.BooleanField(default=True, verbose_name="Доступен")
created = models.DateTimeField(verbose_name='Дата и время создания', auto_now_add=True)
updated = models.DateTimeField(verbose_name='Дата и время редоктирования', auto_now=True)
def get_absolute_url(self):
return reverse('okna:ProductDetail', args=[self.id, self.slug])
class Meta:
ordering = ['name']
verbose_name = 'Модель окна'
verbose_name_plural = 'Модели окна'
index_together = [
['id', 'slug']
]
def __str__(self):
return self.name
url.py:
from django.conf.urls import url
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^okna-pvh/$', views.ProductList, name='ProductList'),
url(r'^okna-pvh/(?P<category_slug>[-\w]+)$', views.ProductList, name='ProductListByCategory'),
url(r'^okna-pvh/(?P<id>\d+)/(?P<slug>[-\w]+)$', views.ProductDetail, name='ProductDetail'),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
views.py:
from django.shortcuts import render, get_object_or_404
from .models import Category, Product
# Страница с товарами
def ProductList(request, category_slug=None):
category = None
categories = Category.objects.all()
products = Product.objects.filter(available=True)
if category_slug:
category = get_object_or_404(Category, slug=category_slug)
products = products.filter(category=category)
return render(request, 'apps/okna/product/list.html', {
'category': category,
'categories': categories,
'products': products
})
# Страница товара
def ProductDetail(request, id, slug):
product = get_object_or_404(Product, id=id, slug=slug, available=True)
return render(request, 'apps/okna/product/detail.html', {'product': product})
Помогите реализовать данную задумку буду очень благодарен.
Updated 12 May 2017, 20:07 by kozeron1010.