2009-04-09 111 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

相關問題