【问题标题】:Django unicode method doesn't workDjango unicode 方法不起作用
【发布时间】:2013-09-06 10:30:42
【问题描述】:

当我在模型部分定义一个类时,我编写了一个__unicode__ 方法。但它仍然显示类名+对象形式。比如,Publisher 对象

class Publisher(models.Model):
    name = models.CharField(max_length = 30)
    address = models.CharField(max_length = 50)
    city = models.CharField(max_length = 60)
    state_province = models.CharField(max_length = 30)
    country = models.CharField(max_length = 50)
    website = models.URLField()

    def __unicode__(self): 
        return self.name

【问题讨论】:

  • 您遇到了什么错误?一切似乎都很好。
  • 你在哪里看到这个“类名+对象”的形式模型表示?
  • 是的,你在哪里看到这个:在管理界面还是在 shell 中?
  • 在浏览器中(我使用 chrome)。运行在127.0.0.1:8000/admin@sachitad
  • 也尝试覆盖__str__

标签: django unicode django-models


【解决方案1】:

如果您使用的是 Python 3+,那么您应该使用 str 类型和 __str__ 函数,因为没有 unicode 类型。可能这里的 Django 文档已经过时了。

我不太确定,所以上面的段落可能也是一派胡言。

【讨论】:

    【解决方案2】:

    正如@Python Fanboy 所说,这可能是因为您正在运行 python3: See here

    Django 最近才开始支持 py3,所以大部分旧文档可能需要更新。

    【讨论】:

      【解决方案3】:

      我正在遵循相同的教程,并且还遇到了有关不正确输出的错误(将 unicode() 方法添加到代码后没有实际效果)。 在我的情况下,问题是 _unicode_() 方法的缩进不正确。一开始我没有注意到这一点,因为重新进入 shell 后控制台中没有错误( python manage.py 外壳)。仔细重新键入 Publisher 类后,一切正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-13
        • 2015-09-18
        • 1970-01-01
        • 2017-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-07
        相关资源
        最近更新 更多