将名称命名为USER OBJECT

时间:2017-07-26 19:43:51

标签: django heroku

我正在django中构建一个应用程序,我已经在Heroku上部署了这个应用程序。我的错误是当我在我的应用程序上访问名称时,我将“name”作为我的模型中的外键,部署在Heroku上的名称显示为“USER OBJECT”。

我可以在本地服务器上运行时访问正确的名称。

我尝试了很多不同的方法,但仍无法修复它。

图片可以更好地理解我的错误。

2 个答案:

答案 0 :(得分:0)

例如

Class User(models.Model):
   @property
   def get_fullname(self):
       return self.first_name + ' ' + self.last_name

在模板{{i.name.get_fullname}}

答案 1 :(得分:0)

问题出在Upload.__unicode__方法中。在本地你有Python2.7因此做unicode(self.name)返回对象的适当表示。在Heroku上,您有Python3.6.1,希望您提供__str__,因此您需要实现__str__兼容性:

class Upload(models.Modal):
    # other fields

    def __unicode__(self):
        retrun unicode(self.name)

    def __str__(self):
        return self.__unicode__().encode('utf-8')

或者只使用python_2_unicode_compatible并仅实施__str__

from django.utils.encoding import python_2_unicode_compatible


@python_2_unicode_compatible
class Upload(models.Modal):
    # other fields

    def __str__(self):
        retrun str(self.name)

否则,在模板中,您只需{{ i.name.username }}即可获取用户名。