2013-02-22 14 views
12

私はDjangoを初めて使い、アプリケーションモデルと環境モデルを持っています。環境には、外部キーとしてのアプリケーションがあります。私はユニコード()メソッドを人間が読める形式で記述する必要があることを知っていますが、文字列の一部として表示するために、外部キーオブジェクトから属性を取得する方法はありますか?django-model unicode()は、外部キーオブジェクト属性を表示します。

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"となるため、 "NavSystem DEV1"として表される環境モデルは単に "DEV1"よりも有用です。

答えて

13

実際には、 'dot'構文を使用して属性を参照することができます。これは私がまさに必要である、

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

恐ろしい:ここ は、あなたが望むものです。ありがとう! – MD6380

+1

"ドット構文"を使用して外部Keyオブジェクトにアクセスすると、 'NoneType'オブジェクトに 'name'属性がありません。私は自己を使う。 。属性 "name"が存在します。 – Timo

関連する問題