0

我正在开发一个用于托管媒体(特别是音频和图像)的 Django 应用程序。我的模型中有单独的图像画廊和照片,并将它们与 a 链接ForeignKey(不确定这是否正确,但仍在学习)。我需要的是专辑类__unicode__返回专辑所有者的用户名。

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

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

我知道 username 属性存在,并通过插入 adir()并检查控制台输出来确认它。问题是当我进入管理面板的图像部分时,它只是显示“无法识别的命令”。模型不能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'
4

1 回答 1

1

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

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

附带说明一下,您还应该能够返回 self.artist,因为我相信User.__unicode__()无论如何都会返回用户名。

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

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

str(self.user.username)
于 2009-04-09T03:36:27.430 回答