2015-09-17 28 views
0

我是django的新手。我怎樣才能在一個Django的模板Concat的字符串循環django concat字符串與模板中的逗號

{% for lead in project.leaders %} 
    {% if forloop.counter == 1 %} 
     {% lead_member = lead.0 %} 
    {% else %} 
     {% lead_member = ','.lead.0 %} 
    {% endif %} 
{{ lead_member }} 
{% endfor %} 

最後我lead_member應該test1,test2,test3....

現在發生的事情(我當前的代碼)

{% for lead in project.leaders %} 
    {{ lead.0}} 
{% endfor %} 

,輸出爲test1test2test3....但我想做的一樣test1,test2,test3....

+0

在哪語言會有意義嗎?你不能在Django模板中分配,但即使你可以,重複分配給同一個變量也不會創建一個列表。你在任何地方都沒有逗號,這應該是問題的全部。 –

+0

現在檢查我的問題修訂。這是演示代碼。我想要實現最後一行中提到的那個 –

+0

爲什麼你需要連接?該模板只是呈現一個HTML頁面,所以輸出將是相同的 – Sayse

回答

2

試試這個。它的工作原理

{% for lead in project.leaders %} 
    {{ lead.0 }}{% if not forloop.last %}, {% endif %} 
{% endfor %} 

有沒有需要分配什麼,也不通過使用委派標籤需要這種類型的複雜性。爲了使您的模板愚蠢的,簡單的,你總是可以做到這一點在你看來,甚至在模型級別:

# don't step on the `join` built-in 
from django.template.defaultfilters import join as join_filter 

class Project(models.Model): 

    @property 
    def leaders(self): 
     return join_filter(self.objects.values_list('some_field', flat=True), ', ') 

然後,所有你必須在模板做的是:

{{ project.leaders }} 
+0

謝謝。嘗試在'意見'不起作用。然而第一個解決方案工作 –

+0

你認爲你試過的代碼是什麼? – Brandon

+0

我用'dict(zip(k,a))'製作了一個複雜的數據結構(字典)。我可以告訴你,如果你想 –

0

這很難理解你的問題,但我希望我 做到了。有一些相關的問題,如String-concatination, How to concatenate in django

可以創建第一個字符串,使用逗號和每個迭代的新字符串進行分組。在渲染之前,您也可以在服務器端使用像','.join(list_of_strings)這樣的水平。您還可以通過{{ list|join:", " }}加入您的模板列表。