2009-04-09 70 views
0

我正在处理用于托管媒体(特别是音频和图像)的Django应用程序。我的图片库和照片分别在我的模型中,并将它们与ForeignKey链接(不确定这是否正确,但仍在学习)。我需要的是专辑类的__unicode__返回相册所有者的用户名。Django模型:从当前登录用户返回用户名

class Album(models.Model): 
    artist = models.ForeignKey(User, unique=True, related_name='artpunk') 

    def __unicode__(self): 
     return self.artist.username 

我知道用户名属性存在,并通过插入dir()和检查控制台输出证实了它。问题是当我进入管理面板的图像部分时,它只是声明“无法识别的命令”。 User属性不能被模型访问吗?还是我在做其他事情?

编辑:忘了提及,使用Python 2.6与Django 1.0.2。如上所述,错误的确切文本只是粗体的“无法识别的命令”,并且我已经运行了syncdb而没有问题。然而,我今天早上再次尝试syncdb(没有输出),只是为了再试一次,现在它似乎工作正常。

这是通过改变以下重复性:

def __unicode__(self): 
     return self.artist.username 

为了这样的事情:

def __unicode__(self): 
     return self.artist.username+'\'s Gallery' 
+0

你能后整个错误的确切文本? – user27478 2009-04-09 01:19:26

回答

1

应该有从模型访问用户(甚至作为一个外键)没有问题。我刚刚完成了自己的测试,看起来没有任何显着差异。

def __unicode__(self): 
    return self.user.username 

在一个侧面说明,你也应该只能够返回self.artist,因为我相信User.__unicode__()反正返回的用户名。

错误的具体细节是什么?你使用的是什么版本的Django/Python?你有没有改变你的模型,但尚未反映在数据库中?有时候我注意到你只需要重启测试服务器就可以正常工作。特别是在管理员。

在回答您的编辑,尝试铸造的用户名作为字符串:

str(self.user.username) 
+1

甚至更​​好地使用unicode字符串,以便unicode方法实际返回一个unicodestring :-) return self.artist.username + u'\'s Gallery' – 2009-08-05 09:16:08

相关问题