因此,我大概是因为传递的 id 值大于 9 而得到了 NoReverseMatch。这是我收到的错误消息:Reverse for 'article-details' with arguments '('2', '9')' not found. 1 pattern(s) tried: ['a/(?P<pk>[0-9]+)$']这是我的代码:Models.pyclass Post( models.Model):title = models.CharField( max_length = 250 )author = models.ForeignKey( User , on_delete=models.CASCADE )body = models.TextField()def get_absolute_url(self): print((self.id)) return reverse('article-details' , args= str(self.id))urls.pyurlpatterns = [path ( 'a/<int:pk>' , ArticleDetailView.as_view() , name='article-details' ) ,path('create/' , CreatePost2.as_view() , name='create_post' ) ,path ( 'p/<int:pk>' , postDetails , name= 'post-details' ) ,]我认为,由于每当使用 id > 9 调用反向时,数据库中都会有超过 10 个条目,因此它会将其解释为具有 2 个值的对。我该如何解决这个问题?
1 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
Args 像元组一样接受可迭代对象。但字符串也是可迭代的,因此如果您传递单个字符串'29'
,它会将其解释为两个参数2
和9
。
您应该将self.id
(或者可能更好self.pk
)包装在一个单例元组中:
def get_absolute_url(self): return reverse('article-details' , args=(self.pk,))
添加回答
举报
0/150
提交
取消