当我尝试从管理页面删除用户时,我遇到了一个有趣的错误(Django 1.5):
AttributeError at /admin/teaching/student/5/delete/
'tuple' object has no attribute 'replace'
接下来是一个很长的追溯我不明白,最后抱怨
line 43 in .../site-packages/django/utils/html.py in escape:
return mark_safe(force_text(text).replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"').replace("'", '''))
但text
只是字符串:Error in formatting: coercing to Unicode: need string or buffer, tuple found
。所以force_text
正在返回一个元组?这与我的模特有什么关系?我很困惑。
我的用户是学生,每个学生模型都有一个带有用户模型的OneToOneField,所以我想也必须删除相应的Student对象。我可以从shell中删除用户而没有任何问题(并且Student对象也会消失)。
编辑:这是Student
模型:
class Student(models.Model):
user = models.OneToOneField(User)
start_year = models.IntegerField()
name = models.CharField(max_length=100)
token = models.CharField(max_length=20, blank=True, null=True)
def __unicode__(self):
return self.name,
def user_email(self):
return self.user.email
答案 0 :(得分:5)
斑点!如果它不是拼写错误,那么__unicode__
return子句中的尾随逗号会使它返回tuple
,这就是你得到的错误。
def __unicode__(self):
# note the tralining comma
#return self.name,
#should be like this (no comma)
return self.name
希望这有效!