Django模板外键遍历

时间:2014-01-27 16:20:45

标签: python django django-templates foreign-keys

我在这方面看到了多个问题,但对我没有用,所以我会查询我的具体问题 我有一个表,其中有几个外键指向其他表,如下所示:

class EventCodes(models.Model):
    code_name = models.CharField(max_length=25)

class Severities(models.Model):
    severity_name = models.CharField(max_length=15)

class Systems(models.Model):
    system_id = models.CharField(max_length=15)

class Events(models.Model):
    system_id_fk = models.ForeignKey(Systems)
    severity_fk = models.ForeignKey(Severities)
    code_fk = models.ForeignKey(EventCodes)

我还有一个模板,允许用户为每个system_id和/或severity_name和/或code_name定义搜索条件 - >这将从事件表中提供相关记录

唯一的问题是,现在当我在结果模板中显示它们时,我会显示它们的ID而不是它们的值(Django ORM为每个表添加了id PK)

问题:我如何允许得到事件的查询集的结果html访问System,Severities,EventCodes表中的值,这样我就可以显示它们的字符串值而不是它们的非人类可读ID

1 个答案:

答案 0 :(得分:1)

您可以使用. Django covers this in the documentation

访问该媒体资源,从而跨越关系
an_event = Events.objects.all()[0]
an_event.system_id_fk.system_id

您的命名约定可能有点令人困惑,因为对于ForeignKey Fields django会自动在模型上创建_id字段:

system_id_fk = models.ForeignKey(Systems)

上面在db中的system_id_fk_id表中创建了一个名为events的列。但是当您访问an_event.system_id_fk时,它会使用system_id_fk_id列来查询相关的对象!