Как получить два разных объекта из одной и той же функции представления в django в соответствии с требованиями? - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть 3 модели в Django, которые выглядят следующим образом:

class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(max_length=100, unique=True)

class Subcategory(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='subcategories')

class Product(models.Model):
    name = models.CharField(max_length=200, unique=True)
    category = models.ForeignKey(Subcategory, on_delete=models.CASCADE, related_name='products')
    slug = models.SlugField(max_length=150, unique=True)

Функция просмотра, которую я хочу изменить в данный момент, выглядит следующим образом:

def product_list(request, category_name):
    subcategory = get_object_or_404(Subcategory, slug=category_name)

    subcategory_name = subcategory.name
    product_list = subcategory.products.all()
    context = {
        'name':subcategory_name,
        'product_list':product_list,
    }
    return render(request, 'products/product_list.html', context)

В одной из моих html шаблонов каждая категория отображается вместе с подкатегориями под ним. Если кто-то нажимает на название категории вместо подкатегории под названием этой категории, я хочу, чтобы функция представлений отображала все продукты, относящиеся к этой категории, а не только одну подкатегорию в данной категории. Я могу создать отдельное представление для этого, но я хочу знать, есть ли способ сделать это в той же функции представления.

...