Django模型:从当前登录的用户返回用户名

时间:2009-04-09 00:39:06

标签: python django django-models django-admin

我正在研究用于托管媒体的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属性吗?或者我做错了什么?

编辑:忘记提及,使用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'

1 个答案:

答案 0 :(得分:1)

从模型访问用户(即使作为外键)应该没有问题。我刚刚完成了自己的测试,似乎没有任何显着差异。

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

另一方面,你也应该能够返回self.artist,因为我相信User.__unicode__()无论如何都会返回用户名。

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

为了响应您的编辑,请尝试将用户名转换为字符串:

str(self.user.username)