2015-08-16 36 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对象*。 –

相关问题