如何在get_absolute_url中包含其他应用程序的urls.py:reverse()django?

时间:2019-11-12 05:11:11

标签: django django-urls

在应用程序models.py中,我使用get_absolute_url使用位于不同应用程序urls.py中的“名称”来返回到特定路径。

但是我当然会出错,因为我还没有为该应用创建urls.py,因为其他一些urls.py中已经存在urlpattern。

那么我可以反向使用任何include(app.urls)类型功能吗?

#app: A - urls.py
urlpatterns = [
path('post/<int:pk>/', PostDetailView.as_view(), name = 'post-detail'),
...
]

#app: B - models.py
def get_absolute_url(self):
    return reverse('post-detail',kwargs = {'post_id.id':self.post_id.id})

1 个答案:

答案 0 :(得分:0)

在您的主要urls.py文件中,您必须按如下所示添加所有应用程序url,然后以get absolute方法调用它。您仅在特定模型上定义此方法,并通过自身链接到实例。

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('your_app.urls')),
]

您还可以将get absolute方法修改为

def get_absolute_url(self):
    return reverse('post-detail',kwargs = {"pk": self.pk)