在Django中,我希望使用here所述的get_absolute_url方法显示模型对象的详细视图。
每个细节的URL结构都是这样的......
url.com/company/(?P< company_id >[0-9]+)/people/(?P< slug >[0-9]+)/$
其中... / people /是列表视图,而/ / people / slug /是每个对象的详细信息
返回NoReverseMatch错误,如此
/ company / google / people /
的NoReverseMatch
我将href='{{ people.get_absolute_url }}'
放在我的模板中。
是否有人知道是否使用&#39; company_id&#39; URL中的kwarg导致使用get_absolute_url href为&#39; slug&#39;呈现页面时出现问题。 kwarg?
我之前已经多次使用硬编码的URL在kwarg变量之前完成了这项工作;例如&#39;公司/人/(?P&lt; slug&gt; [0-9] +)/ $&#39; - 请注意,只有一个关键字
完全错误:
反向人物细节&#39;参数&#39;()&#39;和关键字参数 &#39; {u&#39; slug&#39;:u&#39; 798224891221678&#39;}&#39;未找到。尝试过1种模式: [&#39;公司/(?P&lt; company_id&gt; [0-9] +)/ people /(?P&lt; slug&gt; [0-9] +)/ $&#39;]
get_absolute_url方法:
def get_absolute_url(self):
return reverse('people-detail', kwargs={'slug': self.slug})
答案 0 :(得分:3)
如果您的网址格式people-detail
包含命名组company_id
,则在尝试撤消时必须包含该模式。例如,如果您的模型具有Company
模型的外键,那么您可以执行以下操作:
def get_absolute_url(self):
return reverse('people-detail', kwargs={'slug': self.slug, 'company_id': self.company_id})