Я пытаюсь получить доступ к значениям dict в моем шаблоне django. Ключи диктовки - это объекты. Вот фрагмент моей кодовой базы:
models.py
class ProductCategory(models.Mode):
name = models.CharField(max_length=64, blank=False, null=False, unique=True)
slug = models.SlugField(blank=False, null=False, unique=True)
class Product(models.Model):
category = models.ForeignKey(ProductCategory, on_delete = models.CASCADE)
# other fields
pass
def __str__(self):
return self.title
views.py
def index(request):
products = Product.objects.all()
categorized_products = {}
for p in products:
prod_category = p.category
temp = categorized_products.get(prod_category,[])
temp.append(p)
categorized_products[prod_category] = temp
context = {'products_dict': categorized_products, 'categories': categorized_products.keys() }
return render(request,'product/index.html', context=context)
mytemplate. html (соответствующий фрагмент)
<div class="tab-content">
{% for category in categories %}
{% if not forloop.counter0 %}
<div class="tab-pane fade in active" id="{{ category.slug }}">
{% else %}
<div class="tab-pane fade in" id="{{ category.slug }}">
{% endif %}
<div >
<h4>{{ category.description }}</h4>
<div class="container-fluid">
<div class="row">
<div class="col-md-3" style="border:1px solid red;">
{% for product in products_dict.category %}
{{ product }}
{% endfor %}
Когда я выполняю код с помощью отладчика, я вижу, что переменная products_dict
является точной и правильно заполнена представлением. Однако когда я запускаю код, код for loop
не выполняется.
Точно так же, когда я запускаю тот же код, который у меня есть в views.py в оболочке, dict корректно заполняется, поэтому я знаю, что в базе данных есть данные и что полученные данные правильно передаются в шаблон django.
Так почему я не могу получить доступ к значению dict в шаблоне и почему продукт не отображается в мой шаблон?