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>
4

2 に答える 2

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})
于 2012-12-18T10:51:56.670 に答える
1

このユース ケースの regroup テンプレート タグがあります: https://docs.djangoproject.com/en/1.4/ref/templates/builtins/?from=olddocs#regroup

regroup を使用するもう 1 つの利点は、関与する sql 呼び出しが 1 つだけであることです。多くのカテゴリがある場合、これは問題になる可能性があります。

于 2012-12-18T10:45:10.453 に答える