首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相同的动态数据进入网页的每一列

相同的动态数据进入网页的每一列
EN

Stack Overflow用户
提问于 2022-07-19 07:39:47
回答 1查看 26关注 0票数 0

我正在使用序列化器、外键执行CRUD操作,并试图动态列出类别,sub_categories。例如,类别= 9-6磨损和它的子类别是库塔,短裙,服装,库塔塞特。我想在下面的这些子类别中只穿9-6

问题是,其他子类也提到了库尔塔、短裙、连衣裙和库塔塞特,我不想这样做,如下所示

我试了几个小时,但没有成功。

下面是我的模型

代码语言:javascript
运行
复制
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 Category(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)

下面是序列化程序

代码语言:javascript
运行
复制
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__"

下面是我的购物页面功能

代码语言:javascript
运行
复制
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循环部件

代码语言:javascript
运行
复制
{% 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 result.subcategory_set.all %}   
                                <ul class="listitem-list">
                                    <li>
                                        <a href="/kurta" target="_self">{{ans.sub_categories_name}}</a>
                                    </li>
                                </ul>
                            {% endfor %}                                      
                        </div>
                    </div>
                </div>  
                {% endfor %}

非常感谢您的帮助,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 08:00:22

这是因为您只是循环遍历模板中所有类别的所有子类别:

代码语言:javascript
运行
复制
{% for result in category %}
   ...
      {% for ans in subcategory %}

您应该更改第二个循环,以便它只引用相关的子类别:

代码语言:javascript
运行
复制
{% for ans in result.subcategory_set.all %}

编辑

在本例中,序列化程序是不必要的,子类别查询集也不是必需的。视图可以如下所示:

代码语言:javascript
运行
复制
def shoppingpage(request):
   categories = Categories.objects.filter(isactive=True)
   context = {'categories': categories}
   return render(request,'polls/shoppingpage.html', context)

编辑很多错误都归结于上下文/变量的不对齐:

代码语言:javascript
运行
复制
# models.py
model Category
   ...

model Subcategory
   ...
代码语言:javascript
运行
复制
# views.py
context = {'categories': Category.objects.all()}
代码语言:javascript
运行
复制
# template
{% for category in categories %}
    {% for subcategory in category.subcategory_set.all %}
     ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73032928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档