2013-02-22 62 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

相关问题