1

管理ページからユーザーを削除しようとすると、面白いエラーが発生しました (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タプルを返すのですか?それは私のモデルと何の関係がありますか? よくわかりません。

私のユーザーは学生であり、各 Student モデルには User モデルを持つ OneToOneField があるため、対応する Student オブジェクトも削除する必要があると思います。User をシェルからまったく問題なく削除できます (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
4

1 に答える 1

5

発見!__unicode__タイプミスでない場合は、 return 句の末尾のコンマが原因で a が返されているtupleため、エラーが発生しています。

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

これがうまくいくことを願っています!

于 2013-05-27T16:21:24.837 に答える