Django:"无法转换'姓名'反对str含义"关于保存对象

时间:2014-04-06 08:52:42

标签: python django postgresql typeerror psycopg2

在Django admin中,我创建了一个Name对象,其名称为:" United Kingdom"。然后,我创建一个Nation对象,其中包含我刚刚创建的Name对象,以及一个指向标志图像的路径。

在保存条目时,我得到:

/ admin / display / nation / add /

中的TypeError
Can't convert 'Name' object to str implicitly
Request Method: POST
Request URL:    http://127.0.0.1:8000/admin/display/nation/add/
Django Version: 1.6.2
Exception Type: TypeError
Exception Value:    Can't convert 'Name' object to str implicitly
Exception Location: \models.py in __unicode__, line 24

models.py的相关部分

class Name(models.Model):
    def __unicode__(self):
        return 'Name: ' + self.name
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    class Meta:
        db_table = 'name'

class Nation(models.Model):
    def __unicode__(self):
        return 'Nation: ' + self.name
    id = models.AutoField(primary_key=True)
    name = models.ForeignKey(Name)
    flag_path = models.CharField(max_length=64)
    class Meta:
        db_table = 'nation'

从错误消息我明白return 'Name: ' + self.name需要返回一个字符串以追加到' Name:',但是如何修改我的models.py以允许这样做?

2 个答案:

答案 0 :(得分:1)

__unicode__()方法中使用unicodes,即

u'Name: ' + self.name

u'Nation: ' + self.name

如果'Nation: ' + self.name中没有unicode,它将尝试获取未为Name对象定义的字符串表示。

答案 1 :(得分:1)

修复问题的更改:

'姓名:' + self.name.name

这样我就可以正确引用名称表中的名称列。