@kaliboba

Почему ничего не выводит?

Добрый день, пытаюсь написать сортировку товаров по категориям, однако при нажатии на ссылки товаров нет, вот код (в некоторых местах сократил для вас)
models.py
class Category(models.Model):
    name = models.CharField(max_length=30, unique=True)
    url = models.SlugField(max_length=100,unique=True,null=True)
class Product(models.Model):
    category = models.ForeignKey(Category, on_delete = models.CASCADE)
    name = models.CharField(max_length=50)
    price = models.IntegerField()
    date = models.DateTimeField(null = True)
    url = models.SlugField(max_length=100,unique=True,null=True)

views.py
def index(request):
    data = Product.objects.all()
    categ = Category.objects.all()
    return render(request,'magazin/index.html',{'data' : data,'cat' : categ})

def cat(request,url):
    cat = Category.objects.all()
    prod = Product.objects.filter(category__url = url)
    return render(request,'magazin/index.html',{'cat':cat,'prod':prod})

url.py
urlpatterns = [
    path('',views.index,name='index'),
    path('<slug:url>/',views.cat,name='vc')
]

index.html
{%extends 'base.html'%}

{%block title%}ГЛАВНАЯ{%endblock%}

{%block content%}
<h1>КАТЕГОРИИ</h1>
    {% for i in cat %}
        <div>
            <a href="/{{i.url}}">{{i.name}}</a>
        </div>
    {% endfor %}
    <h1>ТОВАРЫ</h1> 
    {% for i in data %}
        <div class="p">
           <h4><b>НАЗВАНИЕ: </b>{{i.name}}</h4>
           <h4><b>ЦЕНА: </b>{{i.price}}</h4>
           <h4><b>КАТЕГОРИЯ: </b>{{i.category}}</h4>
           {% if i.is_recently %}
                <h1 class="p">НЕДАВНО В ПРОДАЖЕ!</h1> 
           {% endif %}                                                                                                                            
           <hr>                      
        </div>
    {% endfor %}                                   
{%endblock%}
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
Mi11er
@Mi11er
A human...
Первое, у вас в контексте нет data, а есть cat и prod
Второе, используйте просто set

{% for i in cat %}
    {% for el i in i.product_set.all %}
    {% endfor %}
{% endfor %}


и третье , сразу оптимизурйте запрос через prefetch
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы