使用与类别、子类别和功能相关的预回迁

2024-10-01 22:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试循环我的FeatureCatergoriesFeatureSubcategoriesFeatures。我可以很好地循环我的功能类别。现在我想循环我的功能子类别,最后是功能。我不确定在我的子类别模板中调用什么。。应该是{{featuresubcategory.title}}吗?那features

视图.py

def features_view(request):
    context = {
        "feature_categories": FeatureCategory.objects.prefetch_related('featuresubcategory_set').all(),
    }
    return render(request=request, template_name="main/features.html", context=context)

template.html

{% for category in feature_categories %}
    {{category.title}}
    {% for subcategory in featuresubcategory %}
        {{ subcategory.title }}
    {% endfor %}
{% endfor %}

型号.py

class FeatureCategory(models.Model):
    title = models.CharField(max_length=50)
    featured_image = models.ImageField(blank=True, upload_to="features/")
    category_slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='title')

    class Meta:
        verbose_name_plural = "Feature Categories"

    def __str__(self):
        return self.title


class FeatureSubcategory(models.Model):
    title = models.CharField(max_length=50)
    category = models.ForeignKey('FeatureCategory', on_delete=models.CASCADE)
    category_slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='title')

    class Meta:
        verbose_name_plural = "Feature Subcategories"

    def __str__(self):
        return self.title

class Feature(models.Model):
    title = models.CharField(max_length=150)
    category = models.ManyToManyField(FeatureSubcategory)
    description = models.TextField()
    featured_image = models.ImageField(upload_to=image_dir)

    class Meta:
        verbose_name_plural = "Features"

    def __str__(self):
        return self.title

Tags: nameself功能truereturntitlemodelsrequest
1条回答
网友
1楼 · 发布于 2024-10-01 22:32:19

在模板中,必须进行更改

featuresubcategorycategory.featuresubcategory_set.all() 而且

prefetch_related('featuresubcategory')代替prefetch_related('featuresubcategory_set')

{% for category in feature_categories %}
{{category.title}}
    {% for subcategory in category.featuresubcategory_set.all %}
        {{ subcategory.title }}

    {% endfor %}
{% endfor %}
  • 对于子类别的要素,请将相关名称添加到类别字段中

category = models.ManyToManyField(FeatureSubcategory,related_name='subcategory_features')

现在,您可以在模板中使用它,并且不要忘记进行迁移

 {% for category in feature_categories %}
    {{category.title}}
    {% for subcategory in category.featuresubcategory_set.all %}
        {{ subcategory.title }}
         {% for feature in subcategory.subcategory_features.all %}
              {{feature.title}}
        {% endfor %}


    {% endfor %}
{% endfor %}

您可以看到相关对象引用here

相关问题 更多 >

    热门问题