У меня есть модели, имеющие отношение с использованием внешнего ключа.
class Cat1(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length = 100)
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=50)
productId = models.AutoField(max_length=50,primary_key=True)
productType = models.CharField(max_length=50)
matType = models.CharField(max_length=100,default='Use comma , to seperate multiple materials')
seller = models.ForeignKey(User, related_name='sellers',on_delete=models.CASCADE,default='NA')
cat_1 = models.ForeignKey(Cat1,related_name='catlevel1',on_delete=models.CASCADE,default='NA')
Тогда у меня появятся мои просмотры страницы.где мне нужно отобразить все товары из категории, на которую я нажал.Мой взгляд:
def cat_products(request,pk):
categories = get_object_or_404(Cat1, pk=pk) #here the categories get the category i clicked on homepage.
products = Product.objects.all()
return render(request, 'products.html', {'categories':categories,'products':products})
Тогда products.html:
<!--Full Code not shown for easy understanding-->
{% for prod in categories.products.all %}
{{categories.name}}
<tr>
<td>{{ prod.name }}</td>
<td>{{ prod.matType }}</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
{% endfor %}
Таким образом, категории - это имя, которое можно использовать для доступатекущая категория. Продукты - список всех продуктов.
Я пробовал этот код выше, который не дает результата.Теперь в приведенном ниже коде показаны все объекты товаров.
<!--Full Code not shown for easy understanding-->
{% for prod in products %}
{{categories.name}}
<tr>
<td>{{ prod.name }}</td>
<td>{{ prod.matType }}</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
{% endfor %}
![Webpage with only 'products' in for loop](https://i.stack.imgur.com/qnE6A.png)
Но при этом отображаются все товары независимо от категорий.Так что эта футболка для вечеринок в категории Мужчины также показана в разделе Женщины.
![Webpage of Women Category products](https://i.stack.imgur.com/mZGqY.png)
Я пробовал печатать только все продукты {% for prod in products %}
Строка в коде выше{{categories.name}}
показывает название класса.Это работает нормально, без проблем.
Бэкэнд может без проблем обращаться к базе данных, но я не могу разобраться в разделе шаблона. Здесь продукт и категории, сохраненные как Мужчины в объекте продукта.![Django Admin Panel With product Details.](https://i.stack.imgur.com/ORhCt.png)
Я должен быть в состоянии увидеть Мужские товары категории "Мужчины" и Женские товары категории "Женщины".