Django:get_absolute_url无效

时间:2017-07-06 14:24:33

标签: python django

在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})

1 个答案:

答案 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})
相关问题