Lahiruzz
Lahiruzz

Reputation: 665

Django :coercing to Unicode: need string or buffer, User found

When I run my django project on ssh server, I got follwing error

coercing to Unicode: need string or buffer, User found.

This is my models.py file

class Employee(models.Model):
user = models.OneToOneField(User)
address = models.CharField(max_length=200, blank=True)
name = models.CharField(max_length=200, blank=True)
designation = models.CharField(max_length=20, blank=True, choices=
DESIGNATION_CHOICES)
project = models.CharField(max_length=50, blank=True)
task = models.CharField(max_length=50, blank=True)
image = models.ImageField(upload_to="media/images/", blank=True)

def __unicode__(self):
    return self.user

what is the error here?

Upvotes: 0

Views: 1185

Answers (1)

Hedde van der Heide
Hedde van der Heide

Reputation: 22449

A OneToOneField returns the user instance which cannot be coerced to unicode, as the error already told you. A few possible solutions:

def __unicode__(self):
    return str(self.user)  # mind you this isn't gonna be a very useful

def __unicode__(self):
    return self.user.id

def __unicode__(self):
    return self.user.get_full_name()

def __unicode__(self):
    return self.user.username

def __unicode__(self):
    return self.user.get_full_name() or self.user.username

Basically any method or attribute on user can be returned

Upvotes: 2

Related Questions