2012-12-18 161 views
0

我試圖在我的應用程序中創建一個包含分類循環的部分,然後是該分類中的表格。例如,它應該顯示這樣的:如何在一個循環內循環

類別1

形式1

形式2

類別2

形式3

但什麼即時實際得到的是:

類別1

形式1

形式2

形式3

類別2

形式1

形式2

形式3

我怎樣才能解決這個問題?

我的看法是:

def homepage (request): 

Categories = Category.objects.all() 
Forms = Form.objects.all() 

output = { 
    'Category_Name': Categories, 
    'Form_Title': Forms, 

    } 

return render_to_response('forms/home.html', RequestContext(request, output)) 

而我的HTML是:

<ul>{% for c in Category_Name %}<li>{{ c.Name }}<ul>{% for c in Form_Title %} 
<li><a href="/forms/{{ c.id }}">{{ c.Title }}</a></li>{% endfor %}</ul></li>{% endfor %}</ul> 
+0

所以...你的應用程序應該如何知道哪個表單與哪個類別一致?順便說一句:你*在循環中有*循環,所以你*不需要*,或者至少不以這種方式。另外,你不應該像這樣重用'c'。 – phant0m

回答

3

,如果你的形式通過外鍵關聯到一個類別

class Form(models.Model): 
    ... 
    category = models.ForeignKey(Category) 

你可以做這樣的事情:

<ul> 
    {% for c in Category_Name %} 
    <li>{{ c.Name }} 
     <ul> 
     {% for form in c.form_set.all %} 
     <li><a href="/forms/{{ form.id }}">{{ form.Title }}</a></li> 
     {% endfor %} 
     </ul> 
    </li> 
    {% endfor %} 
</ul> 

看一看的外鍵文檔。

也注意到它不是用在外部和內部循環相同的變量(C)是一個好主意,即使它就像你的榜樣

,並在Python變量名通常被寫小寫

from django.shortcuts import render 

def homepage (request): 
    categories = Category.objects.all() 
    return render(request, 'forms/home.html', 
     {'categories': categories})