1
resposta

Como redirecionar produtos pra determinada categoria

Prezados, boa tarde. Estou desenvolvendo um projeto para um cliente. E na minha página Home, eu criei categorias, e dentro dessas categorias eu quero adicionar determinados produtos.

Por Exemplo: Categoria=Camisas. Produtos="Camisa Azul", "Camisa Preta", e assim por diante.

como eu conseguiria fazer para redirecionar os produtos pra categoria especifica, já implementei isso no model, e queria montar a lógica através das views.

# Create your views here.
def index(request):
    """
    Função index.
    Conforme o Admin criar a categoria, e ela estiver pulicada (publicada=True)
    irá aparecer na página home do sistema.
    E também foi implementado uma paginação, de só aparecer 6 categorias por página
    """
    categorias = Categoria.objects.order_by('nome_categoria').filter(publicada=True)

    paginator = Paginator(categorias, 6)
    page = request.GET.get('page')
    categorias_por_pagina = paginator.get_page(page)

    dados = {
        'categorias' : categorias_por_pagina
    }
    return render(request, 'categorias/index.html',  dados)

Essa é a função da página home, onde eu verifico se a Categoria esta publicada para ficar visível no site.

# Create your views here.
def produto(request, produto_id):
    """
    Função produto, seleciona o produto por id, para mostrar no HTML
    OBS: Precisa de ajustes para mostrar o produto por determinada categoria
    """
    produto = get_object_or_404(Produto, pk=produto_id)

    produto_a_exibir = {
        'produto': produto
    }
    return render(request, 'produtos/produto.html', produto_a_exibir)

E essa é a lógica de produtos, atualmente ele só adiciona o primeiro produto adicionado, e só aparece ele na página de categorias.

Alguém poderia me ajudar, como eu devo desenvolver essa lógica para aparecer mais de um produto na minha categoria.

1 resposta

Tenho um exemplo dessa questão de categorias, só que eu criei um Produto e inseri a categoria dentro dele, não o contrário.

Exemplo:

class Produto(models.Model):

produto=models.CharField(max_length=20,default='')
categoria=models.CharField(max_length=20,default='limpeza')

def index(request):

dados={
'categoria': menu_categoria(),}

def menu_categoria():

categoria=Produto.objects.values('categoria').distinct('categoria')

return categoria

Se o que deseja é fazer igual um site e-commerce onde você separa os produtos por categoria, já que você tem um modelo para Categorias e outro modelo para Produtos e você coloca a categoria como foreignkey... Creio que ficaria assim:

def index(request):

produtos= Produto.objects.values('categoria').distinct()

dados={ 'produto':produto, }

return render(request,'index.html',dados}

Só não tenho certeza se vai retornar um nome ou id, já que categoria seria uma chave estrangeira.