2017-07-06 54 views
0

在Django中,我要通過使用如所描述的here get_absolute_url方法來顯示模型對象的詳細視圖。Django的:get_absolute_url不工作

對每一個細節的URL結構是這樣的......

url.com/company/(?P<company_id>[0-9]+)/people/(?P<slug>[0-9]+)/$ 

哪裏..​​. /人/是列表視圖和... /人/蛞蝓/爲每個細節反對

因爲我把href='{{ people.get_absolute_url }}'在我的模板,它返回NoReverseMatch錯誤,像這樣

NoReverseMatch at /company/google/people/

如果使用的是「COMPANY_ID」 kwarg在URL中是否有人知道引起渲染與get_absolute_url HREF頁面爲「塞」 kwarg問題?

我與工作的kwarg變量之前硬編碼的URL之前很多次做;如 '公司/人/(ΔP<塞> [0-9] +)/ $' - 請注意,只有一個關鍵詞

完全錯誤:

Reverse for 'people-detail' with arguments '()' and keyword arguments '{u'slug': u'798224891221678'}' not found. 1 pattern(s) tried: ['company/(?P< company_id >[0-9]+)/people/(?P< slug >[0-9]+)/$']

get_absolute_url方法:

def get_absolute_url(self): 
     return reverse('people-detail', kwargs={'slug': self.slug}) 
+1

請出示您的模型和'get_absolute_url'方法。錯誤消息顯示您未在關鍵字參數中包含'company_id'。 – Alasdair

+0

@Alasdair更新:) - 該方法是否應該包括公司的關鍵字參數?我已經爲公司創造了自己在「COMPANY_ID」 – jayt

+1

的'get_absolute_url'爲'Company'模型和相關的URL模式方法路過這裏都沒有效果get_absolute_url。你只需要確保當你調用'reverse'時,你包含了你正在反轉的url模式的所有args/kwargs。 – Alasdair

回答

2

如果你的URL模式people-detail包含一個名爲組company_id,則必須包括,當你試圖扭轉這種局面。例如,如果你的模式有一個外鍵Company模型,那麼你可能能夠做到:

def get_absolute_url(self): 
    return reverse('people-detail', kwargs={'slug': self.slug, 'company_id': self.company_id}) 
+0

這很完美 - 謝謝!我已經爲公司模型定義了get_absolute_url,所以沒有意識到有必要再次將company_id kwarg傳遞給這個新的URL。 – jayt