具有类别slug的Django群子类别

2024-06-24 13:37:24 发布

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

试图使一个链接目录页面与类别和子类别,有以下迄今为止,问题是,我不能得到作为一个链接的类别类别

models.py
class Category(models.Model):
"""Category"""
name = models.CharField(max_length=50)
slug = models.SlugField()

def save(self, *args, **kwargs):

                #self.slug = slugify(self.name)
        self.slug = slugify(self.name)
        super(Category, self).save(*args, **kwargs)
def __unicode__(self):
return self.name


class SubCategory(models.Model):
"""Sub Category"""
category = models.ForeignKey(Category)
name = models.CharField(max_length=50)
slug = models.SlugField()

def save(self, *args, **kwargs):

        self.slug = slugify(self.name)
        super(SubCategory, self).save(*args, **kwargs)

def __unicode__(self):
return self.name    

以及

^{pr2}$

为了按类别对子类别进行分组,我在

{% regroup subcategories|dictsort:"category_id" by category as     categories_list %}

<ul>
{% for categories in categories_list %}
<li>{{ categories.grouper }}
           <li> <a href="/links/{{ categories.slug }}">{{ categories.name     }}</a></li>
<ul>
    {% for item in categories.list %}
            <li><a href="/links/{{ item.slug }}">{{ item.name }}</a></li>
    {% endfor %}
</ul>
</li>
{% endfor %}
</ul>

这些都很好地将子类分组在一起

第1类 --子链接1 --子链接2

但我想要的是

CATLINK1 --子链接1 --子链接2

不确定如何以及是否可以像子类别链接那样用自定义链接替换grouper字符串,或者我是否正确地绕过了这个问题

已编辑,添加Bakkals方法如下: 再次编辑;)没关系,我也必须更新命名方案,下面的代码就是工作版本。 尝试使用category.subcategory_集所有这些都是由巴克尔建议的

{% for category in categories %}
<ul>
<li><a href="/links/{{ category.slug }}">{{ category.name }}</a>
{% for subcategory in category.subcategory_set.all %}
<ul>
            <li><a href="/links/{{ subcategory.slug }}">{{     subcategory.name }}</a></li>
</ul>
    {% endfor %}
</li>
</ul>
{% endfor %}
</li>
</ul>
{% endfor %}

Tags: nameself链接modelssavedefli类别
1条回答
网友
1楼 · 发布于 2024-06-24 13:37:24

由于SubCategory包含Category的外键,因此可以使用category.subcategory_set来获取子类别。在

我发现这比手动分组要简单得多

因此,您可以将categories作为所有Category对象的查询集作为模板的上下文,然后在模板中传递

{% for category in categories %}
    ...
    {% for subcategory in category.subcategory_set.all %}
    ...
    {% endfor %}
{% endfor %}

相关问题 更多 >