2015-08-16 40 views
6

我是全新的Django和SQL。我正在通過的教程將def __unicode__(self)放在每個模型類上?這裏是對documentation的參考,但即使在閱讀後,我仍然不明白最終目的是什麼?爲什麼使用__unicode __(self)方法用於django 1.7+?

class Project(models.Model): 
    name = models.CharField(max_length=300) 

    def __unicode__(self): 
     return self.name 

class Task(models.Model): 
    description = models.CharField(max_length=300) 
    project = models.ForeignKey(Project) 

    def __unicode__(self): 
     return self.description 
+0

您對文檔中的描述有何不瞭解?我似乎很清楚。 – BrenBarn

+1

因此,無論您在模板中使用「unicode(instance)」還是「{{instance}}」,都會調用該方法,因爲只是使用__str__來生成Unicode。哪些部分*具體*你有問題嗎? –

+0

@MartijnPieters我只是不知道模型如何存儲數據。我想def將存儲的模型數據轉換爲前端模板的unicode? –

回答

5

的想法是,當你打印{{項目}}你基本上只是一堆亂七八糟的,是不是真的很翔實。

def __Unicode__(self): 

這定義了您打印的內容,因此{{Project}}將顯示對象的描述。這對你來說更有用。

+0

真棒如此def __unicode __(self):將模型轉換爲模板的unicode是否正確? –

+0

是的,但請注意,即使{{project}}將顯示與{{project.description}}完全相同的字符串,您也無法比較它們......例如{{project.description}}!= {{project}} } –

+0

@xElsa:當然可以;如果'__unicode__'返回'self.description',那麼你有*完全相同的Unicode對象*。 –

相關問題