Django:如何在urlpatterns中访问其他模型的主键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:如何在urlpatterns中访问其他模型的主键?相关的知识,希望对你有一定的参考价值。

路由到特定路径时,我得到NoReverseMatch

在获取所有其他类似路径的结果时,无法仅找到一个urlpattern的主键<int:pk>

我假设这个错误是因为这里的模型不同,例如,

没有错误:

class PostUpdateView():
   model = A

我得到的错误是由于:

class AddCommentView():
   model = B
urlpatterns = [
    path('post/<int:pk>/update/', PostUpdateView.as_view(), name = 'post-update'),
    path('post/<int:pk>/comment', AddCommentView.as_view(), name = 'post-comment')]

两个类都在同一个[[views.py文件中,因为我在路由URL中需要模型A的主键,以便可以返回到原始页面。

错误:

Reverse for 'post-comment' with no arguments not found. 1 pattern(s) tried: ['post/(?P<pk>[0-9]+)/comment$']

将两个模型的键包含在同一路径中的正确方法是什么?

注意:A的主键作为外键出现在B中。

答案
您的get_absolute_url方法应类似于kwargs参数。

from django.urls import reverse class AddCommentView(): model = B def get_absolute_url(self): return reverse('post-comment', kwargs={'pk': self.pk})

以上是关于Django:如何在urlpatterns中访问其他模型的主键?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django URLpatterns 中发送请求方法?

将 Django urlpatterns 转换为字典

如何在 HTML 模板中访问 Django URL 参数 /<thing>/?

python_django_urls模块与views模块请求访问过程

Django:Heroku 上的生产应用程序找不到带有“路径”urlpattern 的模板

如何配置Django url指向页面中的特定部分?