2015-10-13 29 views
0

我需要提供一個對象列表,如果點擊它,將您帶到Django Admin中的對象詳細信息頁面。 URL鏈接需要有ID,實際可點擊的是產品的名稱。對多個參數使用Django Reverse

本來,我硬編碼的URL路徑本身,而是能得到鏈接中的ID和名稱:

return "<a href='/admin/content/product/%s'>%s</a>" % (str(obj.id), obj.product_name) 

顯示在CMS:MyProductName爲可點擊的鏈接,這將轉到產品ID X。

由於硬編碼URL會在生產中破壞應用程序,因此我試圖使用reverse。我試圖複製上面:

return reverse("admin:content_product_change", args=[str(obj.id), obj.product_name]) 

,但得到的錯誤:

NoReverseMatch: Reverse for 'content_product_change' with arguments '('1', u'ProductName')' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'admin/content/product/(.+)/$']

+2

的'reverse'函數不會返回整個''標籤,它只會返回路徑。你應該像使用'return'%s「%(反向(」admin:content_product_change「,args = [str(obj.id)]),obj.product_name)' –

+0

@CésarBustíos這似乎並不直觀,但感謝您!作爲回答發佈,我會接受 – Growler

+0

你應該在模板中呈現HTML而不是在視圖 –

回答

1

reverse函數返回的路徑(即/admin/content/product/1),請嘗試更改您的代碼:

product_change_url = reverse("admin:content_product_change", args=[str(obj.id)]) 
return "<a href='%s'>%s</a>" % (product_change_url, obj.product_name)