python_2_unicode_compatible错误; python 2.7,django 1.9

时间:2016-06-15 19:00:26

标签: python django python-2.7 unicode-string

我正在使用Python 2.7和Django 1.9.7。我正在尝试向models.py添加一个字符串方法,但我收到了错误。 当我运行" python manage.py runserver"时,我得到以下内容:

ValueError:@ python_2_unicode_compatible无法应用于Languages,因为它没有定义__ str __()。

from django.db import models
from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class Languages(models.Model):
    langid = models.AutoField(db_column='LangID', primary_key=True)
    lname = models.CharField(db_column='lName', max_length=50, blank=True, null=True)

    class Meta:
        db_table = 'languages'

    def __str__(self):
        return self.lname

这与以下问题非常相似:python_2_unicode_compatible error

但问题是Django不是一个足够新的版本。显然,这里有一些不同的东西。关于问题可能是什么的任何想法?

2 个答案:

答案 0 :(得分:1)

写作时

<template is="dom-repeat" items="[[routes]]">
<div>{{item.color}} | {{item.Index}}</div>
<google-map-directions id="{{item.name}}" 
  renderer-options='{"draggable":true,"polylineOptions":{"draggable":true,"strokeColor":"{{item.color}}"},"routeIndex":1}'
 start-address="{{item.startAddress}}"
  end-address="{{item.endAddress}}"
  travel-mode="DRIVING"
  waypoints='[{"location": "Palo Alto"}, {"location": "San Mateo"}]'>
</google-map-directions>
 <div id="dirt"></div>
 </template>

然后你超越了内置的'str'方法。 因此,无论何时使用str,都会调用您定义的方法而不是内置方法。

因此,如果您想要做的就是返回模型“Languages”对象的“lname”,那么您可以使用不同的def名称

    def __str__(self):
        return self.lname

这个'%s'解决了你的unicode问题。

现在,如果你不想使用def的其他名称,但想要覆盖内置的'str'函数,那么下面的代码应该适合你:

    def lang_name(self):
        return u'%s' % self.lname

但是,默认情况下,Django模型具有以下函数,该函数返回对象的默认值:

    def __str__(self):
        return u'%s' % self.lname

答案 1 :(得分:1)

我通过简单地重启服务器解决了这个问题。

Ctrl+C

之后;

python manage.py runserver