2016-01-29 22 views
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 %} 

回答

1

的建議由於SubCategory包含一個ForeignKey到Category,您可以使用category.subcategory_set獲得的子類別。

我找到比手工做這個簡單的分組你沒有被category_id

這樣你就可以如通過categories所有Category對象的上下文模板的查詢集,然後在模板

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

沒有完全內,但它看起來像在正確的軌道。當使用這個我得到空的項目符號列表,但結構是好的,鏈接不會顯示每個項目符號 – adamzia

+0

使用'prefetch_related'來減少查詢的數量。例如'categories = Category.objects.all()。prefetch_related('subcategory_set')' – Todor

+0

這個工作,不得不更新鏈接本身的命名,很明顯,非常感謝 – adamzia