我正在django中构建一个应用程序,我已经在Heroku上部署了这个应用程序。我的错误是当我在我的应用程序上访问名称时,我将“name”作为我的模型中的外键,部署在Heroku上的名称显示为“USER OBJECT”。
我可以在本地服务器上运行时访问正确的名称。
我尝试了很多不同的方法,但仍无法修复它。
图片可以更好地理解我的错误。
答案 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 }}
即可获取用户名。