Одинаковые динамические данные, поступающие в каждый столбец веб-страницы
Я делаю CRUD с использованием сериализаторов, foreignkeys и пытаюсь динамически перечислить категории, подкатегории. Например, категория = 9-6 одежда и ее подкатегории: курта, юбка, платье, куртасет. Я хочу, чтобы эти подкатегории были ниже только 9-6wear
Проблема в том, что другие подкатегории также упоминают курта, юбочный комплект, платье и куртасет, чего я не хочу, как показано ниже
Я пытался часами, но без особого успеха
ниже представлены мои модели
class Products(models.Model):
categories = models.ForeignKey(Categories,on_delete=models.CASCADE)
sub_categories = models.ForeignKey(SUBCategories,on_delete=models.CASCADE)
color = models.ForeignKey(Colors,on_delete=models.CASCADE)
size = models.ForeignKey(Size,on_delete=models.CASCADE)
image = models.ImageField(upload_to = 'media/',width_field=None,height_field=None,null=True)
title = models.CharField(max_length=70)
price = models.CharField(max_length=10)
sku_number = models.CharField(max_length=10)
product_details = models.CharField(max_length=1000)
quantity = models.IntegerField(default=0)
isactive = models.BooleanField(default=True)
class Categories(models.Model):
#made changes to category_name for null and blank
category_name = models.CharField(max_length=30)
category_description = models.CharField(max_length=30)
isactive = models.BooleanField(default=True)
class SUBCategories(models.Model):
category_name = models.ForeignKey(Categories, on_delete=models.CASCADE)
sub_categories_name = models.CharField(max_length=30)
sub_categories_description = models.CharField(max_length=30)
isactive = models.BooleanField(default=True)
ниже приведены сериализаторы
class SUBCategories(models.Model):
category_name = models.ForeignKey(Categories, on_delete=models.CASCADE)
sub_categories_name = models.CharField(max_length=30)
sub_categories_description = models.CharField(max_length=30)
isactive = models.BooleanField(default=True)
class CategoriesSerializer(serializers.ModelSerializer):
class Meta:
model = Categories
fields = "__all__"
extra_kwargs = {'category_name': {'required': False}}
class POLLSerializer(serializers.ModelSerializer):
class Meta:
model = Products
fields = "__all__"
ниже приведена моя функция страницы покупок
def shoppingpage(request):
cat = Categories.objects.filter(isactive=True)
category = CategoriesSerializer(cat,many=True)
subcat = SUBCategories.objects.filter(isactive=True)
subcategory = SUBCategoriesSerializer(subcat,many=True)
return render(request,'polls/shoppingpage.html',{'category':category.data,'subcategory':subcategory.data})
Ниже приведена часть моего цикла shoppingpage.html for loop
{% for result in category %}
<div class="col-md-3">
<div class="lynessa-listitem style-01">
<div class="listitem-inner">
<a href="/9-6wear" target="_self">
<h4 class="title">{{result.category_name}}</h4>
</a>
{% for ans in subcategory %}
<ul class="listitem-list">
<li>
<a href="/kurta" target="_self">{{ans.sub_categories_name}}</a>
</li>
</ul>
{% endfor %}
</div>
</div>
</div>
{% endfor %}
помощь будет высоко оценена, спасибо!
Потому что вы просто перебираете все подкатегории для всех категорий в вашем шаблоне:
{% for result in category %}
...
{% for ans in subcategory %}
Вы должны изменить второй цикл так, чтобы он ссылался только на связанные подкатегории:
{% for ans in result.subcategory_set.all %}
Редактировать
В этом примере не нужны сериализаторы, как и подкатегория queryset. Представление может выглядеть следующим образом:
def shoppingpage(request):
categories = Categories.objects.filter(isactive=True)
context = {'categories': categories}
return render(request,'polls/shoppingpage.html', context)