django - model unicode() 显示外键对象属性

12 投票
1 回答
6433 浏览
提问于 2025-04-17 16:42

我刚开始学习Django,创建了一个应用模型和一个环境模型。环境模型里有一个外键指向应用模型。我知道我需要写一个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”要有用得多。

1 个回答

13

你确实可以这样做,通过使用“点”语法来引用属性。这里是你想要的内容:

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

撰写回答