首页 > 解决方案 > Django get_absolute_url() 似乎在评论部分不起作用

问题描述

我试图在评论后让我的用户访问文章页面,但缺少一些东西。

class Comment(models.Model):
    post = models.ForeignKey(Post, related_name="comments" ,on_delete=models.CASCADE)
    name = models.CharField(max_length=30)
    body = RichTextUploadingField(extra_plugins=
    ['youtube', 'codesnippet'], external_plugin_resources= [('youtube','/static/ckeditor/youtube/','plugin.js'), ('codesnippet','/static/ckeditor/codesnippet/','plugin.js')])
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return '%s - %s' % (self.post.title, self.name)

    class Meta:
        verbose_name = "comentario"
        verbose_name_plural = "comentarios"
        ordering = ['date_added']

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

网址.py

 path('article/<int:pk>/comment/', AddCommentView.as_view(), name='add_comment'),
    path('article/<int:pk>', ArticleDetailView.as_view(), name="article-detail"),
    path('article/edit/<int:pk>', UpdatePostView.as_view(), name='update_post'),
    path('article/<int:pk>/remove', DeletePostView.as_view(), name='delete_post'),

对于 update_post,get_absolute_url() 有效。提前致谢。

标签: djangoblogs

解决方案


您需要传递一个属于 ArticleDetailView 模型的参数。例如,如果 ArticleDetailView 的模型是 Post:

class ArticleDetailView(DetailView):
    model = Post

get_absolute_url 应该使用 post.pk:

类评论(模型。​​模型):

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

在您的情况下,它不起作用,因为它使用带有文章(帖子)视图的评论 pk


推荐阅读