2010-03-23 34 views
0

我有2個數組,我想在一個模板中呈現,一個是要輸出的數據,另一個是用於刪除項目的formset。因爲看起來django不支持模板標籤中的布爾操作符,所以我嘗試打包這些項目,但是它們僅返回第一個項目和第一個表單。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 %}