2010-12-30 2 views

Antwort

1
{% for task in tasks %} 
    {% for comment in task.comment_set.all|slice:"5" %} 
    {{ comment }} 
    {% endfor %} 
{% endfor %} 
+0

danke, das funktioniert auch. Welcher ist der bessere Ansatz? –

+0

Nun, es gibt viele Django Template Tags/Filter, die solch eine leichte Manipulation von Daten erlauben, so würde ich nicht eine so große Verletzung des MVC-Konzepts dort sehen, auch Django hat einen etwas anderen Ansatz gegenüber diesem Konzept: http: // docs.djangoproject.com/de/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the -template-how-come-you-don-t-verwenden-die-Standard-Namen –

1

Sie dies nicht tun. Sie sollten nicht "echte Arbeit" in einer Vorlage tun, dies bricht die MVC pattern.

Machen Sie die echte Arbeit in der Ansicht und übergeben Sie die Daten an die Vorlage (mit dem Kontextwörterbuch).

def handle_comments(request): 
    tasks = Task.objects.all() 
    comments = {} 
    for task in tasks: 
     comments[task] = task.comment_set.all()[:5] 
    return render_to_response('commenting.html', {'comments': comments}) 

Anschließend können Sie die Kommentare in Ihrer Vorlage iterieren:

{% for task, task_comments in comments.items %}{{ task }}{% endfor %} 
+0

Werke & danke für den Hinweis auf das MVC-Muster. –

Verwandte Themen