2014-01-27 137 views
0

我看到了我的工作,但這種非多的問題,所以我會查詢有關我的具體問題 我有幾個外鍵指向其他表的表,看起來像:Django模板外鍵遍歷

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爲每個o添加了id PK f這些表格)

問題:如何讓結果html得到事件的查詢集訪問系統,Severities,EventCodes表上的值,以便我可以呈現它們的字符串值而不是它們的非人類可讀的ID

回答

1

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

an_event = Events.objects.all()[0] 
an_event.system_id_fk.system_id 

你的命名約定由跨越訪問屬性的關係可能是一個有點混亂,因爲對於ForeignKey的領域自然而然的Django LY模型上創建一個_id場:

system_id_fk = models.ForeignKey(Systems) 

上面創建一個在你的數據庫中events表命名system_id_fk_id列。但是當您訪問an_event.system_id_fk時,它將使用system_id_fk_id列查詢相關對象!

+0

我知道並且已經用於創建初始過濾,問題是我一旦將事件表的queryset傳遞給html模板,html模板如何遍歷外鍵{{event.system_id_fk_id.system_id} }在你的例子中沒有這樣做 – Shimonbd

+0

:'{{event.system_id_fk_id.system_id}}'應該是'{{event.system_id_fk.system_id}}',這就是我想說'system_id_fk_id'只是一個整數,不是相關的對象,你可以用'system_id_fk'來訪問相關的對象 – dm03514

+1

好吧,我糾正了{{event.system_id_fk.system_id}} - 做了這個工作。我現在有點困惑。 Django在外鍵的末尾添加了_id,爲了訪問它,我怎麼需要忽略它呢? – Shimonbd