在Django admin中,我创建了一个Name对象,其名称为:" United Kingdom"。然后,我创建一个Nation对象,其中包含我刚刚创建的Name对象,以及一个指向标志图像的路径。
在保存条目时,我得到:
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
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以允许这样做?
答案 0 :(得分:1)
在__unicode__()
方法中使用unicodes,即
u'Name: ' + self.name
和
u'Nation: ' + self.name
如果'Nation: ' + self.name
中没有unicode,它将尝试获取未为Name
对象定义的字符串表示。
答案 1 :(得分:1)
修复问题的更改:
'姓名:' + self.name.name
这样我就可以正确引用名称表中的名称列。