2013-07-08 84 views
2

views.py隨機循環的Django

def mainpage(request): 

    ads_right = Ads.objects.select_related().all().filter(ads_section = 'R') 
    ads_left = Ads.objects.select_related().all().filter(ads_section = 'L') 

    variables = RequestContext(request, {'ads_right': ads_right,'ads_left': ads_left}) 
    return render_to_response('index.html', variables) 

能否請您回答模板標籤,如何洗牌 'ads_right' 和 'ads_left' 每個刷新。

回答

0

洗牌他們的意見吧:

ads_right = Ads.objects.select_related().all().filter(ads_section = 'R').order_by('?') 
ads_left = Ads.objects.select_related().all().filter(ads_section = 'L').order_by('?') 

# return things as always 
variables = RequestContext(request, {'ads_right': ads_right,'ads_left': ads_left}) 
return render_to_response('index.html', variables) 

如果你想有一個templatetag,你可以使用這樣的事情:

@register.filter 
def shuffle(arg): 
    # slice it, cast it to list 
    my_list = list(arg[:]) 
    random.shuffle(my_list) 
    return my_list 

然後在模板:

{% for item in ads_left|shuffle %} 
+0

做我想用模板標籤如果我是 使用 #洗牌 random.shuffle(ads_right) random.shuffle(ads_left) 的看法 –

+0

'查詢集' 對象doestnot支持項目分配 –

+0

必須轉換他們之前列出,我甚至寫的。另外,如果你在你的視圖中隨機播放它們,你不需要templatetag –