2010-03-23 4 views
0

템플릿에 렌더링하려는 배열이 두 개 있습니다. 하나는 출력 할 데이터이고, 다른 하나는 항목을 삭제하기위한 formset입니다. 이후 django 템플릿 태그에 부울 연산자를 지원하지 않습니다, 나는 항목을 포장하려고했지만 첫 번째 항목과 첫 번째 양식을 2 행만 반환합니다.템플릿의 Django 병렬 배열

하나의 루프에 렌더링되도록 이러한 항목을 하나의 패키지로 만드는 방법은 무엇입니까?

내보기

@login_required 
def forums(request): 

    post = list(forum.objects.filter(child='0')&forum.objects.filter(deleted='0')) 
    user = UserProfile.objects.get(pk=request.session['_auth_user_id']) 
    newpostform = PostForm(request.POST) 
    deletepostform = PostDeleteForm(request.POST) 
    DelPostFormSet = modelformset_factory(forum, exclude=('child','postSubject','postBody','postPoster','postDate','childParentId')) 
    readform = ReadForumForm(request.POST) 
    if newpostform.is_valid(): 
     topic = request.POST['postSubject'] 
     poster = request.POST['postPoster'] 
     newpostform.save() 
    newpostform = PostForm(initial = {'postPoster':user.id}) 
    post = list(forum.objects.filter(child='0')&forum.objects.filter(deleted='0')) 

    else: 
     newpostform = PostForm(initial = {'postPoster':user.id}) 

    if request.method == 'POST': 
     delpostformset = DelPostFormSet(request.POST) 
     if delpostformset.is_valid(): 
      delpostformset.save() 

    else: 
     delpostformset = DelPostFormSet(queryset=forum.objects.filter(child='0', deleted='0')) 


    """if readform.is_valid(): 
     readform.save() 
    else: 
     readform = ReadForumForm()""" 


    return render_to_response('forum.html', {'post':(post,delpostformset.forms), 'newpostform': newpostform, }) 

내 템플릿

<table class="results"> 
<tr class="inner_results_header"><td >Title</td><td>Date/Time</td><td>Poster</td>  <td>Body</td><td><form method="post" id="form" action="" class="usertabs accfrm"><input type="submit" value="Delete" /></td></tr> 
{{formset.management_form}} 
{% for p, form in post %} 



{% url forum_view p.postID as post_url%} 
<tr class="inner_results {% if forloop.counter|divisibleby:2 %}evens{% else %}odds{% endif %}"><span onclick="document.location.href='{{post_url}}';"><td>{{ p.postSubject}}</td><td>{{p.postDate}}</td><td>{{ p.postPoster}}</td><td>{{ p.postBody|truncatewords:50}}</td></span><td> 


{{ form.as_p }} 


</td></tr> 

{% endfor %} 

<tr class="inner_results_header"><td >Title</td><td>Date/Time</td><td>Poster</td> <td>Body</td><td><input type="submit" value="Delete" /></form></td></tr> 

답변

8

사용 zip 내장. post와 delpostformset.forms가 모두 반복 가능한 경우 zip은 튜플 목록을 반환합니다.

post_and_form = zip(post, delpostformset.forms) 

및 템플릿 :

{% for post, form in post_and_form %} 
{% endfor %} 
보기에서
관련 문제