2013-02-22 60 views
12

我是Django的新手,有一個應用程序模型和一個環境模型。環境具有作爲外鍵的應用程序。我知道我需要爲模型的人類可讀表示編寫一個unicode()方法,但是有沒有辦法從foreignkey對象獲取屬性以顯示爲字符串的一部分?django - 模型unicode()顯示foreignkey對象的屬性

class Application(models.Model): 
    app_id = models.IntegerField(primary_key=True) 
    app_name = models.CharField(max_length=200) 
    app_description = models.CharField(max_length=2000, blank=True) 

    def __unicode__(self): 
     return self.app_name 

class Environment(models.Model): 
    app_id = models.ForeignKey(Application, db_column='app_id') 
    environ_id = models.IntegerField(max_length=6) 
    environ_name = models.CharField(max_length=200) 

    def __unicode__(self): 
     return '%s %s' % (application__app_name, self.environ_name) 

我想將環境模型表示爲「app_name environ_name」。

更新: 我之所以要將環境模型顯示爲「app_name environ_name」,是爲了讓用戶在管理頁面上輸入數據時更加清楚。例如,app_name是「NavSystem」,environ_name是「DEV1」,因此將Environment模型表示爲「NavSystem DEV1」比「DEV1」更有用。

回答

13

確實可以通過使用'點'語法來引用該屬性。 這是你想要的:

def __unicode__(self): 
    return '%s %s' % (self.app_id.app_name, self.environ_name)  
+0

太棒了,這正是我所需要的。謝謝! – MD6380 2013-02-22 01:47:01

+1

如果我使用「點語法」來訪問一個外鍵對象,我得到:'NoneType'對象沒有屬性'name'。我用自己。 。屬性「名稱」存在。 – Timo 2014-09-28 08:54:50

相關問題