Django - 模型unicode()显示ForeignKey对象属性

12
我是 Django 的新手,有一个 Application 模型和一个 Environment 模型。Environment 将 Application 作为外键。我知道我需要编写一个 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)

我希望将环境模型表示为“应用程序名称 环境名称”。
更新: 我之所以想将环境模型显示为“应用程序名称 环境名称”,是为了在管理员页面输入数据时对用户更加清晰明了。例如,应用程序名称可以是“NavSystem”,环境名称可以是“DEV1”,因此,将环境模型表示为“NavSystem DEV1”比仅显示“DEV1”更有用。
1个回答

13
您可以使用“点”语法引用属性。以下是您需要的内容:
def __unicode__(self):
   return '%s %s' % (self.app_id.app_name, self.environ_name)     

1
如果我使用“点语法”访问外键对象,我会得到:“NoneType”对象没有属性“name”的错误。我使用self.<foreign key>.<attribute>。属性“name”存在。 - Timo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接