我正在研究用于托管媒体的Django应用程序(特别是音频和图像)。我在我的模型中将图像库和照片分开,并将它们与ForeignKey
相关联(不确定这是否正确,但仍在学习)。我需要的是Album类的__unicode__
返回相册所有者的用户名。
class Album(models.Model):
artist = models.ForeignKey(User, unique=True, related_name='artpunk')
def __unicode__(self):
return self.artist.username
我知道username属性存在,并通过插入dir()
并检查控制台输出来确认它。问题是当我进入管理面板的图像部分时,它只是说出“无法识别的命令”。模型不能访问User
属性吗?或者我做错了什么?
syncdb
而没有问题。但是,今天早上我重新syncdb
(没有输出)只是为了再试一次,现在看起来工作正常。
通过更改以下内容可以重现:
def __unicode__(self):
return self.artist.username
对于这样的事情:
def __unicode__(self):
return self.artist.username+'\'s Gallery'
答案 0 :(得分:1)
从模型访问用户(即使作为外键)应该没有问题。我刚刚完成了自己的测试,似乎没有任何显着差异。
def __unicode__(self):
return self.user.username
另一方面,你也应该能够返回self.artist,因为我相信User.__unicode__()
无论如何都会返回用户名。
错误的具体细节是什么?您使用的是什么版本的Django / Python?您是否对模型进行了更改,但尚未在数据库中反映出来?有时我注意到你只需重新启动测试服务器就可以正常工作。特别是在管理员。
为了响应您的编辑,请尝试将用户名转换为字符串:
str(self.user.username)