【问题标题】:UnicodeDecodeError after wrongly indenting def __unicode__(self): in models.py错误缩进 def __unicode__(self) 后出现 UnicodeDecodeError:在 models.py 中
【发布时间】:2016-01-24 00:45:57
【问题描述】:

我不小心在我的 models.py 中放错了两个 def __unicode__(self): 方法的制表符缩进。 IE。对于两个模型,我做了以下操作:

class Notification(models.model):
     recipient = models.OneToOneField(User)
     timestamp = models.DateTimeField()

def __unicode__(self):
          return "%s recieved a notification" % self.recipient

def 语句与类处于同一级别,return 语句缩进就像方法头正确缩进一样。

我更正了它并投入生产(使用 Heroku 的 Postgres 设置)。如果我在本地访问管理面板(在 SQLite 上),这些数据模型现在可以正确填充。但是,如果我尝试访问我的实时应用程序的管理面板,我会收到 500 响应,并且通过 NewRelic,我发现:

异常:UnicodeDecodeError /django.contrib.admin.options:changelist_view 异常:UnicodeDecodeError:'ascii'编解码器无法解码位置 68 中的字节 0xc3:序数不在范围内(128)

我查看了类似的问题,例如these,但它们似乎不适用于我的案例。什么是django.contrib.admin.options:changelist_view,以及试图告诉我的错误到底是什么。我需要帮助解决这些问题。

附言这与使用 Django 1.5Python 2.7

的遗留项目有关

【问题讨论】:

    标签: python django postgresql heroku django-admin


    【解决方案1】:

    您应该返回一个 Unicode 对象而不是字符串对象。

    假设 self.recepient 已经是 Unicode,请执行以下操作:

    return u"%s recieved a notification" % self.recipient
    

    注意u

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2012-08-02
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-15
      相关资源
      最近更新 更多