Django: “No se puede convertir el objeto ‘Nombre’ a str implícitamente” al guardar el objeto

En el administrador de Django, he creado un objeto Nombre con el nombre: “Reino Unido”. Luego creo un objeto de Nación con el objeto Nombre que acabo de crear y una ruta de acceso a una imagen de marca.

Al guardar la entrada, obtengo:

TypeError en / admin / display / nation / add /

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 

Sección relevante de los modelos.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' 

Desde el mensaje de error, entiendo que return 'Name: ' + self.name necesita obtener una cadena para adjuntar a ‘Name:’, pero ¿cómo puedo modificar mi models.py para permitir eso?

Utilice unicodes en el método __unicode__() , es decir

 u'Name: ' + self.name 

y

 u'Nation: ' + self.name 

Sin unicode en 'Nation: ' + self.name , intentará obtener una representación de cadena que no está definida para el objeto Name .

El cambio que solucionó el problema:

‘Name:’ + self.name.name

De esa manera me estoy refiriendo correctamente a la columna de nombre en la tabla de nombres.