Django:当我尝试删除用户时出现AttributeError

时间:2013-05-27 16:04:05

标签: python django django-admin

当我尝试从管理页面删除用户时,我遇到了一个有趣的错误(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('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;').replace("'", '&#39;'))

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

1 个答案:

答案 0 :(得分:5)

斑点!如果它不是拼写错误,那么__unicode__ return子句中的尾随逗号会使它返回tuple,这就是你得到的错误。

def __unicode__(self):
    # note the tralining comma
    #return self.name,
    #should be like this (no comma)
    return self.name

希望这有效!