2
試圖與類別和子類別一linkdirectory頁,到目前爲止以下,問題是,我不能讓類別爲紐帶的Django組子類別
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>
這所有WOR以下KS分組很好的subcats一起
CAT1 --subcatLINK1 --subcatLINK2
但我想有是
CATLINK1 --subcatLINK1 --subcatLINK2
不知道如何以及如果它有可能取代石斑魚字符串與自定義鏈接像子類別的鏈接,或者如果我正確的方式圍繞這個
編輯,添加Bakkals方法如下: 再次編輯;)沒關係,我不得不更新命名方案,顯然,下面的代碼是工作版本。 試圖用category.subcategory_set.all由Bakkal
{% 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 %}
沒有完全內,但它看起來像在正確的軌道。當使用這個我得到空的項目符號列表,但結構是好的,鏈接不會顯示每個項目符號 – adamzia
使用'prefetch_related'來減少查詢的數量。例如'categories = Category.objects.all()。prefetch_related('subcategory_set')' – Todor
這個工作,不得不更新鏈接本身的命名,很明顯,非常感謝 – adamzia