2011-05-04 24 views
2

我有模型對象的列表:Django的,型號列表中列出的字符串

只是一個例子(我真的不這樣做的所有的()的列表):

class Tag(models.Model): 
    name = models.CharField(max_length=50,primary_key=True) 
    #Some other fields.... 

    def __str__(self): 
     return self.name 

mylist = list(Tag.objects.all()) 

什麼將其轉換爲字符串列表的最佳方式是什麼?
我必須迭代列表嗎?

我在做這樣的事情:

newList = [ t.str() for t in mylist ] 

什麼更好的辦法?

+1

我會說你的方式沒問題。 – brandizzi 2011-05-04 18:09:10

+0

我認爲如果你真的需要一個字符串列表,你的代碼是好的。問題是,你真的需要轉換爲字符串嗎?請記住,模板使用你的'__str__'或'__unicode__'方法,所以你不需要傳遞字符串。你也可以在[mylist]中爲[x.name for x],這可能會快一點。 – 2011-05-04 21:41:44

+0

它不適用於模板...我得到一個包含複雜查詢的項目列表。那麼我需要將字段中的一個作爲字符串並將該列表傳遞給另一個查詢 – 2011-05-05 04:41:41

回答

3

newList = [ str(t) for t in mylist ] 

newList = map(str, myList) 

但是總體來說,我們不要打擾。我們只需將它留給模板,以便在模板呈現時將查詢集轉換爲字符串。

+0

如何在模板中呈現它? – 2011-05-04 18:13:40

+0

通常的方法:'{%for item in the list%} {{item}} {%endfor%}'這些項目會自動轉換爲模板中的字符串。你應該看到這個:http://docs.djangoproject.com/en/1.3/ref/templates/api/ – 2011-05-04 18:30:30

相關問題