django - 模型unicode()显示foreignkey对象属性

时间:2013-02-22 01:15:45

标签: python django django-models python-2.7 django-admin

我是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”,因此将环境模型表示为“NavSystem DEV1”比仅使用“DEV1”更有用。

1 个答案:

答案 0 :(得分:13)

您确实可以通过使用'dot'语法引用属性来实现。 这是你想要的:

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