python - 带有类别 slug 的 django 组子类别

标签 python django grouping

试图制作一个包含类别和子类别的链接目录页面,到目前为止有以下内容,问题是我无法将类别作为链接

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    

views.py
@require_GET
def links(request):
"""Linkdirectory Page"""
categories = Category.objects.all()
subcategories = SubCategory.objects.all()
return render(request, 'links.html', {'categories':         categories,             'subcategories': subcategories,})

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

中使用了以下内容
{% 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>

这一切都很好地将子类别组合在一起

CAT1 --subcatLINK1 --subcatLINK2

但是我想要的是

CATLINK1 --subcatLINK1 --subcatLINK2

不确定如何以及是否有可能用自定义链接替换石斑鱼字符串,例如子类别链接,或者我是否以正确的方式解决这个问题

编辑,在下面添加 Bakkals 方法: 再次编辑 ;) 没关系,显然我还必须更新命名方案,下面的代码是工作版本。 尝试按照 Bakkal 的建议使用 category.subcategory_set.all

{% 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 %}

最佳答案

由于 SubCategory 包含一个指向 Category 的外键,您可以使用 category.subcategory_set 来获取子类别。

我发现这比您通过 category_id

手动进行分组更简单

所以你可以,例如将 categories 作为所有 Category 对象的查询集作为上下文传递给模板,然后在模板中

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

关于python - 带有类别 slug 的 django 组子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082672/

相关文章:

python - pyplot 在计算时保持窗口处于事件状态

python - 如何评估 Python 中的对象检测?

Django 选择多层次的相关对象

分组 Python 元组列表

python - Numpy 按元素之间的差异范围分组

python - 在 matplotlib 中分段更改 x 轴刻度

python - 如何处理 Django 的 Queryset 效率低下?

python - 如何运行自定义 django-admin manage.py 命令

python - 根据 PK ID 创建标题/Slug

c++ - Excel 互操作 : Grouping columns