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

How to include other app's urls.py in get_absolute_url: reverse() django?

在应用程序 models.py 中,我使用 get_absolute_url 来使用不同应用程序 urls.py 中的 "name" 反转到特定路径 urls.py。

但是我当然会收到错误消息,因为我还没有为该应用程序创建 urls.py,因为 urlpattern 已经存在于其他 urls.py.

那么有没有我可以反向使用的 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})

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

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

您也可以将获取绝对方法修改为

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