У меня есть одна модель:
class Product(models.Model):
slug = models.SlugField(unique=True)
image = models.ImageField(upload_to='media')
title = models.CharField(max_length=150)
description = models.TextField()
short_description = models.CharField(max_length=300)
price = models.DecimalField(max_digits=5, decimal_places=2)
discount_price = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True)
stock_quantity = models.PositiveIntegerField(default=10)
in_stock = models.BooleanField(default=True)
on_sale = models.BooleanField(default=False)
date_added = models.DateTimeField(auto_now_add=True, blank=True)
main_category = models.CharField(default='FW', choices=CATEGORY_CHOICES, max_length=2)
additional_category = models.CharField(choices=CATEGORY_CHOICES, max_length=2, blank=True, null=True)
brand = models.CharField(choices=CATEGORY_CHOICES, max_length=2, blank=True, null=True)
size = models.CharField(max_length=2, choices=CATEGORY_CHOICES, default='M', blank=True, null=True)
def __str__(self):
return self.title
Внутри этой модели будут различные виды товаров, например, одежда и книги. Они будут определены полями main_category и Additional_category в модели. Если продукт, который вводится в базу данных, является предметом одежды, я введу значения для размера и бренда. Для книг они, очевидно, будут пустыми.
Однако, если продукт представляет собой предмет одежды, у меня есть одежда для женщин, одежда для мужчин и одежда для детей. Я смогу определить их, выбрав «для женщин» в поле main_category.
В моих шаблонах я хотел бы динамически отображать страницу, которая отображает всю одежду, одну - «одежду для женщин», другую страницу - «одежду для мужчин» et c et c. И затем страница, которая отображает все книги, книги для подростков, книги для взрослых и т. Д. c, основанные на main_category и extra_category.
Если я вхожу в продукт, а основная категория - «для женщин», а дополнительная категория - «плюс размер», я хотел бы, чтобы шаблон динамически отображал все продукты, для которых выбрано «для женщин». главная_категория ИЛИ дополнительная_категория. И шаблон, который отображает одежду всех размеров плюс, где main_category ИЛИ дополнительная_категория - «плюс размер».
Моя проблема возникает, когда я пишу представления. Нужно ли предоставлять для просмотра только женскую одежду, плюс размер только одежду, детскую одежду, книги, книги для взрослых, книги для подростков и др. c. Или я могу написать только один вид, который выводит правильные данные на несколько шаблонов. По сути, мне нужно одно представление для каждого шаблона?
Я прочитал это:
https://docs.djangoproject.com/en/3.0/topics/class-based-views/generic-display/
и взглянул на get_context_data. Могу ли я определить несколько функций get_context_data, чтобы они возвращали различную отфильтрованную информацию для разных шаблонов, и если да, то как мне различать их?
Я в настоящее время учусь и создаю фиктивный онлайн-магазин с Django, чтобы учиться насколько это возможно, но найти это особенно сложным?
Спасибо