2014-03-31 144 views
0

下午好,Django模板:訪問FK方法

我想能夠顯示從在外國表(模板OBJ股份一對多關係)的方法的返回值:

models.py 

class teacher(stuff): 
    name = models.charfield() 
    website = models.URLField() 
    slug = models.SlugField(max_length=255, db_index=True, unique=True) 

    def get_page_url(self): 
     return reverse('teacher_page', args=[self.slug]) 


class homework(stuff): 
    assignment = models.ForeignKey(teacher) 
    due_date = models.DateField() 
    other assignment stuff.. 

我通過分配對象到我的模板,並可以訪問它的屬性,像這樣:

{{homework.due_date}} 

但讓我們說,我想顯示誰分配了homewo老師的頁面RK。我想我應該可以像這樣訪問它:

<a href='{{homework.teacher_set.get_page_url}}'>teacher page</a> 

但是,這隻會導致屬性錯誤。

我怎樣才能得到的網址?

注意:此示例是爲了傳達問題而寫的。沒有語法巨魔!

回答

1

既然是正向關係,你只需做

{{homework.assignment.get_page_url}} 

此外,如果你正在尋找一個相反的外鍵關係,你會怎麼做

{{teacher.name}} 

{% for homework in teacher.homework_set.all %} 
    {{homework.due_date}} 
{% endfor %} 

因爲teacher.homework_setreturns a Manager

+1

差不多:fk字段被稱爲分配,而不是老師。 –

+0

感謝您的快速響應。我嘗試了這一點,並對此進行了許多不同排列,但我無法獲取要顯示的屬性。不過,由於這是一種前瞻性的關係,所以我接受了你的建議,以避開這個組合。當我嘗試「{{homework.assignment.get_page_url}}」時,它工作。因此,使用外部模型名稱不會產生任何結果,但使用FK所定義的字段確實如此。應該是這樣嗎? – ZAR

+0

@DanielRoseman謝謝。 – karthikr